1. 程式人生 > >Asp.net Mvc Codeplex Preview 5 第二篇 Controller&Filter的新特性

Asp.net Mvc Codeplex Preview 5 第二篇 Controller&Filter的新特性

BindingHelperExtensions.UpdateFrom改為UpdateModel

使用方法(缺點:如果表單裡存在MyModel裡不存在的欄位就會報錯)
var x 
=new MyModel();
this.TryUpdateModel(x, Request.Form.AllKeys);

或(缺點:一個一個寫太麻煩)
var x 
=new MyModel();
this.TryUpdateModel(x, new[] {"IDX""Name"});

優點:如果你有定義HtmlHelper.ValidationMessage那麼它將會自動為你判空,詳見上篇文章

 當然,你也可以通過this.TryUpdateModel(x, new[] {"IDX""Name"},"Account");這種方式來獲取不同的Model.

上述 TryUpdateModel返回是否繫結成功的bool值,如果確定無誤,可使用 UpdateModel

Action提供了陣列引數

View:

<%using (Html.Form("home""save", FormMethod.Post)) {%><%=Html.CheckBox("like"%><%=Html.CheckBox("like"%><%=
Html.CheckBox("like"%><%=Html.CheckBox("like"%><%=Html.SubmitButton() %><%}%>

Action:

public ActionResult Save(string[] like)
         {
              ViewData[
"Message"=string.Join("", like);
              
return View("Index");
         }

這樣是可以取到like的值的

AcceptVerbs Filter

這個Filter可以讓我們定義Action的訪問方式


[AcceptVerbs("Post")]
public ActionResult Save()//只有Post才能訪問

[AcceptVerbs(
"Post","GET")]//Post或Get都能訪問,但其它方式不能訪問
public ActionResult Save()

ActionName Filter

為一個方法定義它的ActionName

如HomeController中定義


         [ActionName("MyAction")]
         
public ActionResult Save()
         {
              
return View("Index");
         }

則/home/save不能訪問

一定要/home/myaction才可以訪問