我需要你的帮助。
我尝试使用ViewData.Model
将视图中的对象传递给控制器这是控制器中的索引方法
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
dynamic stronglytyped = new { Amount = 10, Size = 20 };
List<dynamic> ListOfAnynomous = new List<object> { new { amount = 10 } };
ViewData.Model = ListOfAnynomous[0];
return View();
}
这是视图部分
<div>
@Model.amount
</div>
这是错误的
'object' does not contain a definition for 'amount'
请任何人帮助我。
答案 0 :(得分:0)
抛出异常是因为您传递了一个匿名对象。匿名类型是内部的,因此在定义程序集之外无法看到它们的属性。 This article给出了一个很好的解释。
虽然您可以使用html助手来渲染属性,例如
@Html.DisplayFor("amount")
你也会失去智能感,你的应用程序很难调试。
而是使用视图模型来表示您想要显示/编辑的内容并将模型传递给视图。
答案 1 :(得分:-1)
你的代码错了。 如果您想使用模型对象,则将其传递给视图:
return View(ListOfAnynomous[0]);
之后您将能够使用“模型”属性。 ViewData是另一个与model属性无关的容器。
最后,您的方法将如下所示:
public ActionResult Index()
{
ViewBag.Message = "Modify this template to jump-start your ASP.NET MVC application.";
dynamic stronglytyped = new { Amount = 10, Size = 20 };
List<dynamic> ListOfAnynomous = new List<object> { new { amount = 10 } };
// ViewData.Model = ListOfAnynomous[0];
return View(ListOfAnynomous[0]);
}