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