(转)MVC模式参数传递的探究
时间:2010-08-22 来源:黑子范
原文地址:http://www.cnblogs.com/dingding3/archive/2010/08/21/MVC.html
6 | return View(dinner); |
7 | } |
上面代码中SelectList构造函数的第一个参数显示国家列表,第二个参数指定当前选中的国家。
View中代码
上面代码中第一个参数表示输出的HTML表单元素名称,第二个参数是通过ViewData传递的模型类。
使用ViewModel模式:
ViewData的优点:非常快,容易实现
ViewData的缺点:输入错误会导致错误;不能在编译期发现错误原因;在View视图模板中使用强类型时,ViewData要用as来转换。
ViewModel模式:
1.针对特定的View视图创建强类型的类
2.公开View模板需要的动态参数值或内容
3.Controller类填充和传递这些类给View模板去用
4.优点:类型安全、编译期检查和编辑器的智能提示
示例代码: Inherits = "System.Web.Mvc.ViewPage<NerdDinner.Controllers.DinnerFormViewModel>"
绑定列表即为<% = Html.DropDownList("Country".Model.Countries) %>
下面我们需要更新视图中的代码。对于表单中的HTML元素的名称不需要更新,仍旧保持为Title、Country等等,我们需要更新HTML辅助方法,使用DinnerFormViewModel类来获取属性值。
03 | <%= Html.TextBox("Title", Model.Dinner.Title) %> |
04 | <%= Html.ValidationMessage("Title", "*") %> |
05 | </p> |
06 | <p> |
07 | <label for="Country">Country:</label> |
08 | <%= Html.DropDownList("Country", Model.Countries) %> |
09 | <%= Html.ValidationMessage("Country", "*") %> |
10 | </p> |
11 | } |
12 | catch { |
13 | ModelState.AddModelErrors(dinner.GetRuleViolations()); |
14 | return View(new DinnerFormViewModel(dinner)); |
15 | } |
16 | } |
11 | } |
12 | catch { |
13 | ModelState.AddModelErrors(dinner.GetRuleViolations()); |
14 | } |
15 | } |
16 | return View(new DinnerFormViewModel(dinner)); |
17 | } |
MVC模式还有很多妙用,以后还会写更多有关MVC的文章。
相关阅读 更多 +