2010-11-23 41 views
0

我是新来的MVC,并试图让我的头绕AJAX调用和模型验证。以下是我的:如何利用ASP.NET MVC中的PartialView,AJAX和模型验证属性?

一个控制器操作,它为单个文本框和链接提供视图。该视图的样子:

<div> 
... 
<input type="text" name="registration" value=""/><a id="checkRegoLink" href="#">Check rego</> 
... 
</div> 

的checkRegoLink做一个$阿贾克斯()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")格完成验证错误消息。在从强类型视图接受POST的控制器操作中,我尝试了return PartialView("_CreateEntry",model) - 但它返回partialview本身,并带有验证错误消息,但当然是在没有父布局的情况下自行完成。

任何想法将不胜感激。我投票并接受答案慢慢好转。请原谅我的低数据 - 我肯定会投票答复并接受他们,因为我去。

谢谢, Dany。

PS。 我正在使用MVC 3最新的RC

回答

0

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

编辑:

你说“我的问题是,我该如何返回局部视图返回到$(”#目标“)DIV与验证错误消息完成。”

然后你说“...但是它会返回partialview本身,并带有验证错误消息,但当然是在没有父级布局的情况下自行完成。” < - 这不正是你想要的吗?

这不是你想要的吗? partialview完成验证错误消息?

+0

是的,你是绝对正确的 - 我早些时候有一点脑梗塞。我最终会看看Ajax.BeginForm(),但现在我已经设法用$ .ajax()jquery调用手动连接它。有一个问题 - 如果我在部分视图中使用Ajax.BeginForm(),我可以在其外部定位一个div,即。在父视图中? – codedog 2010-11-24 02:06:58