Ole*_*syk 33 asp.net-mvc unobtrusive-validation asp.net-mvc-3
我有我放的Model1的View,Ajax.BeginForm()
在这个View中我有Part2和Model2 Ajax.BeginForm()
.所以只有在第一种形式工作unobtrusive validation
.为什么只在第一次表单工作验证?
第一个视图
@model Model1
@using (Ajax.BeginForm("Action1","Controller",null,new AjaxOption(){ onSuccess = "alert('=)')"},null)
{
<intput type="submit" value="Save" />
}
Model2 model2 = new Model2();
@Html.EditorFor(m=>model2)
Run Code Online (Sandbox Code Playgroud)
**在Model2视图中我有.**
@model Model2
@using (Ajax.BeginForm("AddStreet","Controller",new AjaxOption(){onSuccess = "alert('=)'")},option,null)
{
@Html.LabelFor(m => Model.Name):
@Html.TextBoxFor(m => Model.Name)
@Html.ValidationMessageFor(m => Model.Name)
<intput type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)
谢谢@Darin Dimitrov的回答.
Dar*_*rov 55
这是因为第二个视图在稍后阶段加载了AJAX,并且需要$.validator.unobtrusive.parse(...)
在将其内容注入DOM后立即调用,以便启用不显眼的验证.请查看以下博客文章以获取更多详细信息.
因此,在您的情况下,不是在第一个AJAX调用的回调中发出警报,而是OnSuccess
订阅将调用此方法的javascript函数:
@using (Ajax.BeginForm(
"Action1",
"Controller",
null,
new AjaxOptions {
OnSuccess = "onSuccess",
UpdateTargetId = "result"
},
null)
)
{
<input type="submit" value="Save" />
}
Run Code Online (Sandbox Code Playgroud)
然后在你的javascript文件中:
var onSuccess = function(result) {
// enable unobtrusive validation for the contents
// that was injected into the <div id="result"></div> node
$.validator.unobtrusive.parse($(result));
};
Run Code Online (Sandbox Code Playgroud)
dpe*_*rez 26
您需要在Partial View中添加这两个文件,即使它已经在Shared/_Layout.cshtml中:
<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>
Run Code Online (Sandbox Code Playgroud)
或者将其放在您的部分中:
<script type="text/javascript" language=javascript>
$.validator.unobtrusive.parse(document);
</script>
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
38054 次 |
最近记录: |