我是MVC的新手,并试图了解AJAX调用和模型验证。这就是我所拥有的:
使用单个文本框和链接为View提供服务的Controller操作。视图看起来像:
<div>
...
<input type="text" name="registration" value=""/><a id="checkRegoLink" href="#">Check rego</>
...
</div>
checkRegoLink对一个动作进行$ .ajax()POST调用,该动作为PartialViewResult提供服务。
$.ajax({
url:"/Entry/CheckRego",
type: "POST",
data: {...stuff...},
success: function (data, status, request){
$("#target").html(data);
},
});
PartialViewResult提供强类型的部分视图_CreateEntry
。该视图的模型具有各种属性的[Required]
属性。这是部分视图的一些片段:
@model namespace.EntryModel
@{ Html.EnableClientValidation(); }
@using (Html.BeginForm("CreateEntry", "Entry", FormMethod.Post))
{
...various entry fields, labels and stuff...
<input type="submit" value="Add Entry"/>
}
我的问题是,如何将该部分视图返回到$("#target")
div并返回验证错误消息。在从强类型视图接受POST的控制器操作中,我尝试了return PartialView("_CreateEntry",model)
- 但它返回了部分视图本身,包含验证错误消息,当然还有它自己,没有父布局。
任何想法都将不胜感激。通过投票和接受答案,我正在慢慢好起来。请原谅我的低统计数据 - 我肯定会投票给答案,并在我离开时接受它们。
谢谢, 达尼。
PS。 我正在使用MVC 3最新的RC
答案 0 :(得分:0)
尝试使用Ajax.BeginForm()而不是Html.BeginForm()。看一下用法,它应该允许你指定不同的选项,包括要更新的div。除非您有理由手动执行此操作,否则为什么要手动执行已内置的操作?
编辑:
你说“我的问题是,如何将该部分视图返回到$(”#target“)div中,并附带验证错误消息。”
然后你说“......但是返回部分视图本身,完成验证错误消息,当然还有它自己,没有父布局。” &lt; - 这不正是你想要的吗?
这不是你想要的吗?部分视图是否包含验证错误消息?