通过asp.net mvc中的ViewData.Model发送对象

时间:2015-04-02 09:45:34

标签: asp.net-mvc asp.net-mvc-4

我需要你的帮助。

我尝试使用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'

请任何人帮助我。

2 个答案:

答案 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]);
    }