C# 使用ViewData将数据从控制器传递到视图
我试图将数据从控制器传递到视图,并显示这些数据。但经过多次尝试,我还是做不到 控制器代码:C# 使用ViewData将数据从控制器传递到视图,c#,asp.net-mvc,viewdata,C#,Asp.net Mvc,Viewdata,我试图将数据从控制器传递到视图,并显示这些数据。但经过多次尝试,我还是做不到 控制器代码: public ActionResult ValidSearch(ProductSearchParam gp) { if (gp.IsCandidate) { ViewBag.abc="bob"; List<ProductCandidate> prodClist = new List<ProductCandidate>();
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();
}
公共操作结果有效搜索(ProductSearchParam gp)
{
如果(总成IsCandidate)
{
ViewBag.abc=“bob”;
List prodClist=新列表();
prodClist=Pcs.SearchParam(gp,0100);
ViewBag.total=prodClist.Count;
返回视图(“ValidSearchCandidate”,prodClist);
}
其他的
{
List prodlist=新列表();
prodlist=Ps.SearchParam(gp,0100);
ViewBag.total=prodlist.Count;
返回视图(“ValidSearch”,prodlist);
}
//返回视图();
}
查看代码:
<body>
<div>
<p>Bonjour @ViewBag.abc</p>
你好@ViewBag.abc
我甚至尝试过TempData
或ViewBag
,都没有成功
我不理解为什么值没有正确地传递到视图
有人能帮我解决这个问题吗?在您的示例中,您在Controller中使用了ViewData,在View中使用了TempData
如果在控制器中使用ViewData[“Nom”],则应在视图中使用ViewData[“Nom”]。您是否使用了没有拼写错误的对象?由于您在
控制器上的ViewData
上设置了一些属性,因此可以在视图上的ViewData
上使用它。另一方面,您有TempData
,当您需要将请求之间的信息传输到另一个路由(重定向到某个操作)时,可以使用它。对于示例:
public ActionResult ValidSearch(ProductSearchParam gp)
{
List<ProductCandidate> prodClist = new List<ProductCandidate>();
ViewData["Nom"] = "bob";
return View("ValidSearchCandidate", prodClist);
}
公共操作结果有效搜索(ProductSearchParam gp)
{
List prodClist=新列表();
ViewData[“Nom”]=“bob”;
返回视图(“ValidSearchCandidate”,prodClist);
}
并且认为:
@ViewData["Nom"].ToString()
@foreach(var prod in Model)
{
<li>@prod.Name</li>
}
@ViewData[“Nom”].ToString()
@foreach(模型中的var prod)
{
@产品名称
}
您可以使用ViewBag进行此操作
控制器:
ViewBag.name= "bob";
视图:
<p>Bonjour @ViewBag.name</p>
你好@ViewBag.name
将控制器代码中的ViewBag[“try”]替换为ViewData[“try”]
并且,在else条件下,您没有任何ViewData的声明[“try”]so
在视图上使用ViewData之前,您可能必须先检查它。TempData
不是ViewData
!显示您如何尝试访问ViewData
属性对不起,我的错误,我已经正确尝试了,但它不起作用。对不起,我在示例中做得不对,如果ViewData位于控制器和视图中,它就不起作用。您是在视图或布局页面中调用ViewData吗?我真的不明白您的问题,我正在调用视图的Html(主体)部分的ViewData。您确定在ViewData属性之前您的操作方法没有返回吗?如果可能的话,发布完整的操作代码正如我所看到的,有两个视图:ValidSearch和ValidSearchCandidate。ViewData[“try”]仅在ValidSearchCandidate为选定项时才存在。您是否正在将@ViewData[“try”]放入正确的视图中?谢谢您的回答,我已经尝试了您的视图代码,ProductCandidate是我创建的类,因此它在视图中是“不可修改的”。使用。uuuuu而不是[“uuuuuuu”]会在控制器代码中出现错误。这是因为您使用了关键字“try”。请使用ViewBag而不是ViewData。我想您可能会混淆ViewBag和ViewData,请确保您在控制器中以及在视图中使用ViewBag。我的错误是,我只是复制粘贴了一行错误的内容。但它不起作用。。。我已经使用了ViewBags/数据,我不明白为什么它不起作用。。。