我正在尝试从控制器传递数据以查看,并显示这些数据。但经过多次尝试,我做不到。
控制器代码:
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
,但未成功。
我不明白为什么这个值没有正确传递给View 有人可以帮我解决这个问题吗?
答案 0 :(得分:6)
由于您已在ViewData
的{{1}}上设置了一些属性,因此Controller
上的ViewData
可以使用该属性。另一方面,当您需要在请求之间将信息传输到另一个路由(重定向到某个操作)时,您将使用View
。样本:
TempData
在视图中:
public ActionResult ValidSearch(ProductSearchParam gp)
{
List<ProductCandidate> prodClist = new List<ProductCandidate>();
ViewData["Nom"] = "bob";
return View("ValidSearchCandidate", prodClist);
}
答案 1 :(得分:2)
您可以将ViewBag用于此
控制器:
ViewBag.name= "bob";
查看:
<p>Bonjour @ViewBag.name</p>
答案 2 :(得分:1)
在您的示例中,您在View中使用了ViewData,在View中使用了TempData
如果在控制器中使用ViewData [“Nom”],则应在视图中使用ViewData [“Nom”]。您是否使用了拼错对象?
答案 3 :(得分:1)
将ViewBag [&#34;尝试&#34;]替换为控制器代码中的ViewData [&#34;尝试&#34;]。
并且,在else条件下,你没有任何ViewData声明[&#34;尝试&#34;]所以 您可能需要在视图中使用ViewData之前检查它。