我发生了这种奇怪的事情。
我有一个包含3个字段的PartialView。我对我的动作结果做一个jQuery ajax帖子,如果模型通过验证,我保存记录。然后我还将模型设置为空并将其作为局部视图传递回视图。
public ActionResult jQueryAddComment(Comment comment)
{
if (ModelState.IsValid)
{
//do stuff here
comment = new Comment();
}
return PartialView("AddNewComment", comment);
}
当我回到页面时,我的JS用新的局部视图中的html替换了注释div的内容。
function submitComment() {
$.post('/Home/jQueryAddComment', { forumItemId: $('#id').val(), owner: $('#owner').val(), text: tinyMCE.get('text').getContent(), emailAddress: $('#emailAddress').val() }, function (result) {
alert(result);
$('.AddNewComment').html(result);
});
}
但是,当页面呈现时,值会重新到位。我可以看到一个空模型被传递给视图,为什么我以前的值仍然存在?
即使我将空对象传递给控制器中的局部视图,即使警报也显示了值。
修改
我应该提一下,我无法清除页面JS中的字段,因为我想使用相同的代码来呈现错误以及成功的请求。
答案 0 :(得分:3)
在使用传递给帮助程序的值之前,标准HTML帮助程序会查看ModelState和ViewData中的值。
这可能会有所帮助: How to clear textboxes defined with MVC HTML helpers
答案 1 :(得分:3)
在将新的空白模型作为部分视图返回之前使用ModelState.Clear()
,例如:
if (ModelState.IsValid)
{
//your save logic
ModelState.Clear();
comment = new Comment();
}
return PartialView("AddNewComment", comment);