如何利用ASP.NET MVC中的PartialView,AJAX和模型验证属性?

时间:2010-11-23 20:21:06

标签: asp.net-mvc jquery partial-views

我是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

1 个答案:

答案 0 :(得分:0)

尝试使用Ajax.BeginForm()而不是Html.BeginForm()。看一下用法,它应该允许你指定不同的选项,包括要更新的div。除非您有理由手动执行此操作,否则为什么要手动执行已内置的操作?

编辑:

你说“我的问题是,如何将该部分视图返回到$(”#target“)div中,并附带验证错误消息。”

然后你说“......但是返回部分视图本身,完成验证错误消息,当然还有它自己,没有父布局。” &lt; - 这不正是你想要的吗?

这不是你想要的吗?部分视图是否包含验证错误消息?