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才可以訪問