Мне интересно, как решить проблему. Я разрабатываю приложение ASP.NET MVCICollection <> внутри ICollection <> в Razor - невозможно получить имена моделей
У меня есть models
public class SearcherString
{
public int ID { get; set; }
public string Description { get; set; }
public virtual ICollection<Path> Path { get; set;
public SearcherString()
{
Path = new List<Path>();
}
}
public class Path
{
public int ID { get; set; }
public int CategoryID { get; set; }
public string CategoryName { get; set; }
}
Я передаю его в моем Controller
(я пишу моей модели в моей базе данных, и затем я «м извлечения его)
public ActionResult Index()
{
return View(db.SearchersString.ToList()
}
И у меня есть View
с:
@model IEnumerable<App.Models.SearcherString>
Проблема заключается в том, на мой взгляд, я не могу отобразить имена из Path модели (CategoryID, CategoryName)
Я попытался сделать:
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Description)
</th>
@foreach (var item in Model)
{
foreach (var path in item.Path)
{
<th>
@Html.DisplayName(path.CategoryID.ToString())
</th>
<th>
@Html.DisplayName(path.CategoryName)
</th>
}
}
<th></th>
</tr>
@foreach (var item in Model)
{
<tr>
<td>
@Html.DisplayFor(modelItem => item.Description)
</td>
@foreach (var path in item.Path)
{
<td>
@Html.DisplayFor(modelItem => path.CategoryID)
</td>
<td>
@Html.DisplayFor(modelItem => path.CategoryName)
</td>
}
<td>
@Html.ActionLink("Edit", "Edit", new { id = item.ID }) |
@Html.ActionLink("Details", "Details", new { id = item.ID }) |
@Html.ActionLink("Delete", "Delete", new { id = item.ID })
</td>
</tr>
}
</table>
Может ли кто-нибудь помочь мне с этой проблемой?
Edit:
Есть ли способ изменить Html.DisplayName
к Html.DisplayNameFor
здесь?
@Html.DisplayName(path.CategoryID.ToString())
Вы уверены, что 'Path' фактически содержит некоторые элементы –
я добавил точку останова в строке ** @ Еогеасп (вар элемент в модели) ** и он не будет входить в это ** Еогеасп ** –
Поскольку ваш «Путь» - пустая коллекция –