C# MVC 禁用绑定控制器方法名称到模型的操作 属性
C# MVC disable binding Controller Method Name to Action property of the model
问题是 - 我的控制器将方法名称绑定到我模型的 "Action" 属性,当然它会导致我的模型状态出错,因为 Method Name is String 而我的 Action 属性 是 Object。我希望 Action 属性 在我的 Formdata 中不存在时为 null。
表单数据:
处理 POST 请求时的模型状态:
我的控制器动作:
[HttpPost]
public ActionResult RouteRoleActionsSave(TskRouteRoleAction model,List<TskAction.Actions> RoleActions = null)
{
using (var context = new SmartDbContext())
{
if (ModelState.IsValid)
{
return Json("ok");
}
return Json(ModelState);
}
}
我的模特:
[Table("TSK_ROUTE_ROLE_ACTIONS")]
public class TskRouteRoleAction
{
[Key, Column("ROUTE_ID", Order = 0), ForeignKey("Route")]
public decimal RouteId { get; set; }
public TskRoute Route { get; set; }
[Key, Column("ROLE_ID", TypeName = "numeric", Order = 1), ForeignKey("Role")]
public TskRole.Roles? RoleId { get; set; }
public TskRole Role { get; set; }
[Key, Column("ACTION_ID", TypeName = "numeric", Order = 2), ForeignKey("Action")]
public TskAction.Actions? ActionId { get; set; }
public TskAction Action { get; set; }
}
在浏览文档后我注意到问题是由我的路由映射引起的,它在其中使用了 "Action" 参数名称,因此它与我的模型的 Action 属性 冲突:
我已通过向我的表单添加绑定前缀来解决此问题,因此不再存在冲突的绑定参数:
问题是 - 我的控制器将方法名称绑定到我模型的 "Action" 属性,当然它会导致我的模型状态出错,因为 Method Name is String 而我的 Action 属性 是 Object。我希望 Action 属性 在我的 Formdata 中不存在时为 null。
表单数据:
处理 POST 请求时的模型状态:
我的控制器动作:
[HttpPost]
public ActionResult RouteRoleActionsSave(TskRouteRoleAction model,List<TskAction.Actions> RoleActions = null)
{
using (var context = new SmartDbContext())
{
if (ModelState.IsValid)
{
return Json("ok");
}
return Json(ModelState);
}
}
我的模特:
[Table("TSK_ROUTE_ROLE_ACTIONS")]
public class TskRouteRoleAction
{
[Key, Column("ROUTE_ID", Order = 0), ForeignKey("Route")]
public decimal RouteId { get; set; }
public TskRoute Route { get; set; }
[Key, Column("ROLE_ID", TypeName = "numeric", Order = 1), ForeignKey("Role")]
public TskRole.Roles? RoleId { get; set; }
public TskRole Role { get; set; }
[Key, Column("ACTION_ID", TypeName = "numeric", Order = 2), ForeignKey("Action")]
public TskAction.Actions? ActionId { get; set; }
public TskAction Action { get; set; }
}
在浏览文档后我注意到问题是由我的路由映射引起的,它在其中使用了 "Action" 参数名称,因此它与我的模型的 Action 属性 冲突:
我已通过向我的表单添加绑定前缀来解决此问题,因此不再存在冲突的绑定参数: