Использование 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, прежде чем использовать его в вашем представлении.

Другие вопросы по тегам