Использование ViewData для передачи данных из контроллера в View
Я пытаюсь передать данные из контроллера для просмотра и отображения этих данных. Но после многих попыток я не могу.
Код контроллера:
public ActionResult ValidSearch(ProductSearchParam gp)
{
if (gp.IsCandidate)
{
ViewBag.abc="bob";
List<ProductCandidate> prodClist = new List<ProductCandidate>();
prodClist = Pcs.SearchParam(gp,0,100);
ViewBag.total = prodClist.Count;
return View("ValidSearchCandidate", prodClist);
}
else
{
List<Product> prodlist = new List<Product>();
prodlist = Ps.SearchParam(gp,0,100);
ViewBag.total = prodlist.Count;
return View("ValidSearch", prodlist);
}
//return View();
}
Посмотреть код:
<body>
<div>
<p>Bonjour @ViewBag.abc</p>
Я даже попробую TempData
или же ViewBag
, безуспешно.
Я не понимаю, почему значение не передается в представление правильно Может кто-нибудь помочь мне решить эту проблему?
4 ответа
Так как вы установили какое-то свойство на ViewData
на Controller
, он будет доступен на ViewData
на View
, С другой стороны, у вас есть TempData
который используется, когда вам нужно перенести информацию между запросами на другой маршрут (перенаправляет на действие). Для образца:
public ActionResult ValidSearch(ProductSearchParam gp)
{
List<ProductCandidate> prodClist = new List<ProductCandidate>();
ViewData["Nom"] = "bob";
return View("ValidSearchCandidate", prodClist);
}
И в представлении:
@ViewData["Nom"].ToString()
@foreach(var prod in Model)
{
<li>@prod.Name</li>
}
Вы можете использовать ViewBag для этого
Контроллер:
ViewBag.name= "bob";
Посмотреть:
<p>Bonjour @ViewBag.name</p>
В вашем примере вы использовали ViewData в Controller и TempData в View
Если вы используете ViewData["Nom"] в контроллере, вы должны использовать ViewData["Nom"] в представлении. Вы используете, что вы не пишете объект с ошибками?
Замените ViewBag["try"] на ViewData["try"] в коде вашего контроллера.
И, в условии else у вас нет никакого объявления ViewData["try"], поэтому, возможно, вам придется проверить ViewData, прежде чем использовать его в вашем представлении.