将数据从控制器返回到asp.net mvc中的视图

时间:2009-05-12 18:07:14

标签: asp.net-mvc

是否可以将复杂类型从控制器返回到asp.net mvc中的视图?到目前为止,我所看到的所有示例都演示了传递简单的内部类型,如int,string ....

3 个答案:

答案 0 :(得分:2)

您可以使用ViewData Dictionary将任何对象类型传递给视图。

只需放入你的控制器:

ViewData["example"] = (YourObject)data;

然后在你看来:

<%= ((YourObject)ViewData["example"]).YourProperty %>

如果您想将对象作为View模型传递,那么:

return View("viewname", (YourObject)data);

并确保您的观点如下:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<YourObject>" %>

答案 1 :(得分:2)

您可以创建一个随后在强类型视图中使用的视图模型。您可以查看解释它的blogpost by Stephen Walther。我开始只是在viewdata中转储东西,但这很快就会让人感到困惑;)。

答案 2 :(得分:0)

为您的网页使用ViewModel。

您可以使用包含复杂和简单对象的视图模型,例如:

public class MyComplexViewModel
{
    public Address UserAddress { get; set;}
    public List<string> ValidZipCodes { get; set; }
    public string Message { get; set; }
}

如果您的视图使用类似的内容继承了通用ViewPage

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MyComplexViewModel>" %>

然后您可以在视图中将视图模型用作Model。:

<%= Html.Encode(Model.UserAddress.SomeAddressProperty) %>
<%= Html.Encode(Model.ValidZipCodes.Count) %>
<%= Html.Encode(Model.Message) %>