Roo*_*ian 19 c# modelbinders asp.net-mvc-2
是否有[Bind(Exclude = "Id")]
(相关问题)的替代方案?
我能写一个模型活页夹吗?
Dar*_*rov 32
是的,它有:它被称为视图模型.视图模型是专门针对给定视图的特定需求而定制的类.
所以代替:
public ActionResult Index([Bind(Exclude = "Id")] SomeDomainModel model)
Run Code Online (Sandbox Code Playgroud)
使用:
public ActionResult Index(SomeViewModel viewModel)
Run Code Online (Sandbox Code Playgroud)
其中视图模型仅包含需要绑定的属性.然后,您可以在视图模型和模型之间进行映射.使用AutoMapper可以简化此映射.
作为最佳实践,我建议您始终在视图中使用视图模型.
Des*_*ond 13
我想出了一个非常简单的解决方案.
public ActionResult Edit(Person person)
{
ModelState.Remove("Id"); // This will remove the key
if (ModelState.IsValid)
{
//Save Changes;
}
}
}
Run Code Online (Sandbox Code Playgroud)
作为现有答案的补充,C#6可以以更安全的方式排除属性:
public ActionResult Edit(Person person)
{
ModelState.Remove(nameof(Person.Id));
if (ModelState.IsValid)
{
//Save Changes;
}
}
}
Run Code Online (Sandbox Code Playgroud)
要么
public ActionResult Index([Bind(Exclude = nameof(SomeDomainModel.Id))] SomeDomainModel model)
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
31083 次 |
最近记录: |