我遇到了这样一种情况,即 EditorForModel 通过将提交的数据填充到我的模型中来进入我的方式。让我向您展示那个让我陷入困境的用例。
一方面,我有一个可以保存到数据库中的表单:
public class Person {
[HiddenInput(...)]
public int Id {get; set;}
public string Name {get; set;}
}
在我的控制器的另一边,我有一些动作可以让我记录用户:
public class PersonsController {
public ActionResult User(bool SaveAsNew, Person p)
{
if (SaveAsNew)
{
myRepository.Add(p);
myRepository.SaveChange();
// p.Id is now a new Value.
}
else {
Person updateMe = myRepository.Query()
.Where(repoP => repoP.Id = p.Id)
.First();
updateMe.UpdateWith(p)
myRepository.SaveChange();
}
return PartialView(p);
}
}
在视图方面,我调用了@Html.EditorForModel()
一些 Javascript,这些 Javascript 会根据您单击“保存”或“另存为新”来更新隐藏的输入。
但是我在这里遇到了麻烦,因为EditorForModel
从发布的数据中填充数据,所以当用户点击“另存为新”时,Id 永远没有机会改变。
所以我想知道是否有某种方法可以清除提交的数据。就像是:
if (SaveAsNew)
{
myRepository.Add(p);
myRepository.SaveChange();
Request.ClearPostData();
// p.Id is now a new Value.
}
谢谢