三分线

  :: 首页 :: 新随笔 :: 联系 :: 订阅 :: 管理 ::

View包括两个部分,一个是UI的展示,另一个是用户的输入数据。通过使用ViewModel,可以有效降低UI管理的复杂度,同时充分利用智能感知提高代码编写效率。

ASP.NET MVC恰好支持这种强类型的View模型,如

先定义一个ViewModel

public class UserInput

{

public string Name { get; set; }

public int Point { get; set; }

}

 

再新建一个View引用这个Model

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"

Inherits="System.Web.Mvc.ViewPage<MyMVC.Models.UserInput>" %>

 

<asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">

    UserSubmit

</asp:Content>

 

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

 

<h2>UserSubmit</h2>

<%= Model.Name %>

</asp:Content>

 

这样便实现了强类型的ViewModel,这个ViewModel承担着ControllerView的数据桥梁的作用,除了这种ViewModel的方式,Controller还可以通过ViewData这个字典绑定数据,如:

public class SubmitController : Controller

{

//

// GET: /Submit/

 

public ActionResult Index()

{

ViewData.Add("Name", "Test");

return View();

}

}

 

这种方式维护成本较高且代码编写效率也不高,一般不推荐使用。

 

View中既有展示的数据,还有用户输入的数据时,则需要在ViewModel中添加相应的数据项,如:

public class UserInput

{

public string Name { get; set; }

public int Point { get; set; }

 

public class UserProfile {

public string Address { get; set; }

public bool IsDefault { get; set; }

}

 

public List<UserProfile> Profiles { get; set; }

}

这种嵌套定义的方式能够保持ViewModel的完整性,全部数据项都在一个类里,维护起来比较容易,但是如果数据结构复杂时,比如:数据项比较多,涉及多个集合类等等,也许还会增加复杂度,当尚处于控制的状态中。

posted on 2010-07-20 15:02  三分线  阅读(816)  评论(2)    收藏  举报