1、按照如下顺序查找绑定到Model 上的值:
- Request.Form
- RouteData.Values
- Request.QueryString
- Request.Files
2 调用 Model Binding 方式
2.1 自动调用
public ActionResult DisplayAddress(Address address) {
return View(address);
}
2.2 手动调用
public ActionResult DisplayAddress() {
IList<Address> addresses = new List<Address>();
UpdateModel(addresses);//使用UpdateModel手动调用,如果绑定出错报异常
TryUpdateModel(addresses);//使用TryUpdateModel手动调用,如果绑定出错不报异常
return View(address);
}
3、作用范围(用Include 举例)
3.1 方法上
public ActionResult DisplayAddress([Bind(Include = "Country")]Address address) {
return View(address);
}
3.2应用程序上
//Model Address
[Bind(Include = "Country")]
public class Address {
public string City { get; set; }
public string Country { get; set; }
}
4、绑定不包含某属性
//
public ActionResult DisplayAddress([Bind(Exclude = "Country")]Address address) {
return View(address);
}
5、绑定固定属性
public ActionResult DisplayAddress([Bind(Include = "Country")]Address address) {
return View(address);
}
7、添加前缀
//
public ActionResult DisplayAddress([Bind(Prefix="HomeAddress")]Address address) {
return View(address);
}
8、自定义 Model Binder
8.1 定义
//实现IModelBinder
public class AddressBinder : IModelBinder {
public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext) {
Address model = (Address)bindingContext.Model ?? new Address();
model.City = GetValue(bindingContext, "City");
model.Country = GetValue(bindingContext, "Country");
return model;
}
private string GetValue(ModelBindingContext context, string name) {
name = (context.ModelName == "" ? "" : context.ModelName + ".") + name;
ValueProviderResult result = context.ValueProvider.GetValue(name);
if (result == null || result.AttemptedValue == "")
return "<Not Specified>";
else
return (string)result.AttemptedValue;
}
}
8.2 注册
protected void Application_Start()
{
AreaRegistration.RegisterAllAreas();
ModelBinders.Binders.Add(typeof(Address), new AddressBinder());
}
最后编辑于 :
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。