我对 MVC 还是很陌生,很难弄清楚如何最好地解决这个问题。
我有一个自动脚手架"Create" (GET)
操作的修改版本,它采用可选参数(下拉列表的默认值)。然后它将其表单提交给"Create" (HTTPPost)
操作。
public ActionResult Create(string id = null)
{
//use id to pick a default item in a drop down list.
}
[HttpPost]
public ActionResult Create(Registration registration)
{
//this method doesn't care one iota what was passed to the GET method
// but registration.id is invalid because it's trying to set it to the value that was passed to the get method. If id in the get method is not passed, then everything is fine
}
问题是,如果将值传递给 GET 创建操作,则ModelState.isValid
该操作为 false,POST create
因为它试图将传递给 GET 操作的值填充到 POST 操作中模型的主键 (Id) 字段中(应该省略,因为它是自动生成的。
我知道我可以将主键列名更改为 Id 以外的名称,但我无法控制数据库,并且正在尝试找出解决此问题的另一种方法。
如果我尝试将 GET 操作上的参数从 'id' 重命名为其他名称,那么我必须将链接从 CREATE/paramValue
to更改为CREATE/?paramName=paramValue
我宁愿不这样做。(尽管如果这是唯一简单的方法,我会这样做)。
有没有办法让 POST 操作忽略传递给 GET 操作的值?