mvc core 模型绑定 控制绑定名称
》》》Bind 属性可以用来指定 模型应该 绑定的前缀
public class MyController : Controller
{
[HttpPost]
public ActionResult Create([Bind(Prefix = "MyModel")] Ilist<MyModel> model)
{
// 模型绑定将尝试从请求的表单数据中绑定以"MyModel"为前缀的字段到model参数
if (ModelState.IsValid)
{
// 执行相关操作,例如保存到数据库
return RedirectToAction("Index");
}
return View(model);
}
}
在这个例子中,[Bind(Prefix = “MyModel”)]指定了模型应该绑定的前缀为"MyModel"。这意味着控制器操作Create在接收到HTTP POST请求时,会尝试从请求的表单数据中绑定以"MyModel"为前缀的字段到MyModel类型的参数。
<form method="post" action =''My/Action''>
<input name="MyModel" id=“xx” type=“text” />
<input name="MyModel" id=“xxxx” type=“text” />
<input name="MyModel" id=“xxxxx” type=“text” />
</form
另外,Bind属性也可以用来指定不应该绑定哪些属性:
public class MyController : Controller
{
[HttpPost]
public ActionResult Edit([Bind(Exclude = "Salary")] Employee model)
{
// 模型绑定将尝试绑定除"Salary"以外的所有字段
if (ModelState.IsValid)
{
// 执行更新操作
return RedirectToAction("Index");
}
return View(model);
}
}
在这个例子中,[Bind(Exclude = “Salary”)]指定了在模型绑定时,"Salary"属性将不会被绑定。这通常用于安全考虑,防止用户修改敏感信息。
自定义模型绑定器
public class CustomModelBinder : IModelBinder
{
public Task BindModelAsync(ModelBindingContext bindingContext)
{
// 自定义绑定逻辑
}
}
然后在控制器的方法中使用 [ModelBinder] 特性应用自定义的模型绑定器。
public IActionResult MyAction([ModelBinder(typeof(CustomModelBinder))] MyModel model)
{
// 使用自定义模型绑定器
}