У меня есть модель категории
public class Category
{
//[PlaceHolder("Select file")]
//[UmbracoRequired("Form.Label.Import.SelectFile")]
//[UmbracoDisplay("Form.Label.Import.SelectFile")]
//[Required]
public int Id { get; set; }
public string Name { get; set; }
}
И список категорий, созданных в моем контроллере
List<Category> items = new List<Category>();
Список категорий следует использовать в (строго типизированном) представлении, где у меня есть цикл foreach, отображающий курс другой модели, например.
<td>
@Html.DisplayFor(modelItem => item.Students)
</td>
<td>
@Html.DisplayFor(modelItem => item.AdmissionInfo)
</td>
<td>
@Html.DisplayFor(modelItem => item.CategoryId)
</td>
Так что вместо
@Html.DisplayFor(modelItem => item.CategoryId)
Он должен отображать свойство Name типа Category в зависимости от значения CategoryId модели курса
SelectList categories = new SelectList((IEnumerable<MvcImport.Models.Category>)ViewData["categories"], "Id", "Name", item.CategoryId);
Например.
@Html.DisplayFor(categories.Where(m => m.Id == item.CategoryId).FirstOrDefault())
Но последняя строка не работает.
Не знаю, как назвать только значение. (Я НЕ хочу отображать раскрывающийся список, только выбранное значение)
Благодарность
2 ответа
Вы можете попробовать такой способ:
@Html.DisplayFor(modelItem => categories.First(m => m.Id == item.CategoryId).Name)
Или более безопасно (отформатировано для удобства чтения):
@Html.DisplayFor(modelItem => categories.Where(m => m.Id == item.CategoryId)
.Select(m => m.Name)
.FirstOrDefault())
Это сработало для меня:
@Html.DropDownListFor(x =>item.RequestTypeID, new SelectList(ViewBag.RequestTypes, "Value", "Text", item.RequestTypeID))
Похожие вопросы
Новые вопросы
linq
Language Integrated Query (LINQ) - это компонент Microsoft .NET Framework, который добавляет собственные возможности запроса данных в языки .NET. При необходимости рассмотрите возможность использования более подробных тегов, например [linq-to-sql], [linq-to-entity] / [entity-framework] или [plinq]
Operator '==' cannot be applied to operands of type 'method group' and 'int'
для строки m.Id == item.CategoryId для обоих примеров (и Category.Id, и Course.CategoryId, конечно, являются целыми числами. Мое представление имеет тип@model IEnumerable<MvcImport.Models.Course>
categories
имеет типIEnumerable<Category>
, не заметил, что вы объявили его какSelectList
. Попробуйте:var categories = (IEnumerable<SOMvcApplication.Models.Category>) ViewData["categories"];
var categories = (IEnumerable<MvcImport.Models.Category>)ViewData["categories"];
с@Html.DisplayFor(modelItem => categories.First(m => m.Id == item.CategoryId).Name)