使用ViewData将数据从Controller传递到View

Ant*_*ier 2 c# asp.net-mvc viewdata

我正在尝试从控制器传递数据以查看,并显示这些数据.但经过多次尝试,我做不到.

控制器代码:

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();
}
Run Code Online (Sandbox Code Playgroud)

查看代码:

<body>
    <div>

        <p>Bonjour @ViewBag.abc</p>
Run Code Online (Sandbox Code Playgroud)

我甚至尝试TempDataViewBag不成功地.

我不明白为什么值没有正确传递给View有人可以帮我解决这个问题吗?

Fel*_*ani 6

由于您已经在ViewDataon上设置了一些属性Controller,因此您可以在on上使用ViewDataView.另一方面,TempData当您需要在请求之间将信息传输到另一个路由时(重定向到某个操作),您可以使用该文件.样品:

public ActionResult ValidSearch(ProductSearchParam gp)
{
   List<ProductCandidate> prodClist = new List<ProductCandidate>();

   ViewData["Nom"] = "bob";

   return View("ValidSearchCandidate", prodClist);
}
Run Code Online (Sandbox Code Playgroud)

在视图中:

@ViewData["Nom"].ToString()

@foreach(var prod in  Model)
{
   <li>@prod.Name</li>
}
Run Code Online (Sandbox Code Playgroud)


Fab*_*Luz 1

在您的示例中,您在控制器中使用了 ViewData,在视图中使用了 TempData

如果在控制器中使用 ViewData["Nom"],则应该在视图中使用 ViewData["Nom"]。您是否使用过您没有拼写错误的对象?