Это мой первый раз, когда я пишу приложение MVC 5 и используя C#. Я прошел довольно далеко, и мне удалось решить множество ошибок, с которыми я столкнулся, но я в тупике.MVC 5 Подробный вид, не отображающий данные для полей с внешними ключами
У меня есть несколько моделей и таблиц, в том числе ссылки на внешние ключи. На моих страницах индекса, каждая запись отображает значения внешнего ключа с помощью следующего кода контроллера:
Index контроллера
public ActionResult Index(int? filterDwg)
{
var checkOut = db.CheckOut.Include(c => c.CheckOutStatus).Include(c => c.DwgList);
var checkedOut = checkOut.Where(s => s.CheckStatus == (1));
//Filtering by Drawing
if (filterDwg != null)
{
checkedOut = checkedOut.Where(d => d.DrawingId == (filterDwg));
}
return View(checkedOut.ToList());
}
Теперь моя страница детали, мой контроллер выглядит следующим образом:
Детали Контроллер
public ActionResult Details(int? id)
{
if (id == null)
{
return new HttpStatusCodeResult(HttpStatusCode.BadRequest);
}
CheckOut checkOut = db.CheckOut.Find(id);
if (checkOut == null)
{
return HttpNotFound();
}
return View(checkOut);
}
Когда я подтягиваю людей Вид мычание:
подробности Просмотреть
@model NoDwgASP.Models.CheckOut
@{
ViewBag.Title = "Details";
}
<h2>Details</h2>
<div>
<h4>CheckOut</h4>
<hr />
<dl class="dl-horizontal">
<dt>
@Html.DisplayNameFor(model => model.CheckOutStatus.CheckStatusName)
</dt>
<dd>
@Html.DisplayFor(model => model.CheckOutStatus.CheckStatusName)
</dd>
<dt>
@Html.DisplayNameFor(model => model.DwgList.DwgNum)
</dt>
<dd>
@Html.DisplayFor(model => model.DwgList.DwgNum)
</dd>
<dt>
@Html.DisplayNameFor(model => model.UserInitials)
</dt>
<dd>
@Html.DisplayFor(model => model.UserInitials)
</dd>
<dt>
@Html.DisplayNameFor(model => model.Project)
</dt>
<dd>
@Html.DisplayFor(model => model.Project)
</dd>
<dt>
@Html.DisplayNameFor(model => model.CheckOutDate)
</dt>
<dd>
@Html.DisplayFor(model => model.CheckOutDate)
</dd>
<dt>
@Html.DisplayNameFor(model => model.ReturnDate)
</dt>
<dd>
@Html.DisplayFor(model => model.ReturnDate)
</dd>
</dl>
</div>
<p>
@Html.ActionLink("Edit", "Edit", new { id = Model.CheckId }) |
@Html.ActionLink("Back to List", "Index")
</p>
Поля для DwgNum и CheckStatusName являются пустыми. Эти поля являются целыми числами и являются внешними ключами, привязанными к другой базе данных, которая имеет строковые значения для этих свойств.
Я понимаю, что нужно что-то вроде так
var checkOut = db.CheckOut.Include(c => c.CheckOutStatus).Include(c => c.DwgList)
, как я сделал в моем контроллере индекса, однако, я не могу просто добавить в .INCLUDE на
CheckOut checkOut = db.CheckOut.Find(id);
Кто-нибудь есть какие-либо предложения? Я в тупике, и я не мог найти никаких связанных проблем.
Вы можете использовать 'db.CheckOut.Include (....) Где (х => x.ID == идентификатор) .FirstOrDefault();. '(предполагая, что 'ID' - ваше поле PK) –
Спасибо! Это сработало ... Я возвращался назад, чтобы ответить на свой вопрос, потому что у меня возникла идея поиска «включить комбинирование и найти MVC 5» после того, как я опубликовал .... http://stackoverflow.com/questions/7348663/ c-sharp-entity-framework-how-can-i-comb-a-find-and-include-on-a-model-obje – mecasull
Метод поиска не поддерживает Include. Это может быть потому, что Find сначала пытается искать объекты, загруженные в память, а затем пытается вернуться в базу данных, поэтому вам нужно использовать Where, как предложено Стивеном. – Vinod