我有这个结构
View
Html.RenderPartial (1)
Html.RenderPartial (2)
然后在每个部分视图中我都有
@Ajax.ActionLink("Edit", "EditMethod", null, new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divEditContent"
}, new { @class = "my-edit" })
点击它时会渲染另一个部分,将div“divEditContent”改为:
public PartialViewResult EditContactInformation()
{
return PartialView("_MyEdit", GetDetails());
}
_MyEdit partial有类似的东西:
@using (Ajax.BeginForm("SaveContactInformation", "MyBsol", new AjaxOptions
{
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divContactInformationContent"
}))
{
<script type="text/javascript">
$(function () {
$('form#ajaxForm').find('a.submit-link').click(function () {
$('form#ajaxForm').submit();
});
})
</script>
<a href="#" class="submit-link">Save</a>
@Ajax.ActionLink("Cancel", "CancelEdit", null, new AjaxOptions
HttpMethod = "POST",
InsertionMode = InsertionMode.Replace,
UpdateTargetId = "divContent"
}, new { @class = "my-cancel" })
@Html.TextBoxFor(model => model.Title, new { @class = "txt-input", placeholder = "Eg. Mr, Mrs, Ms" })
@Html.ValidationMessageFor(model => model.Title)
}
问题是data-val atttributes不会为输入呈现,但是如果我将最后一个部分(_MyEdit)放在Ajax.ActionLink(1)所呈现的位置。
这是一个错误吗?任何解决方法? 提前致谢!吉列尔莫
更新
我发现了一些非常有趣的东西,如果我去(在Chrome或Firefox中使用Firebug)并点击View Source我看不到data-val属性,但是如果我点击Inspect Element我就会看到它们。 ...
答案 0 :(得分:2)
如果您希望数据验证标记存在,则需要位于FormContext
。因此,如果您动态生成表单的一部分,则需要在局部视图中包含以下行:
@{ if(ViewContext.FormContext == null) {ViewContext.FormContext = new FormContext(); }
然后,您需要确保每次添加/删除项目时动态重新绑定不引人注意的验证:
$("#form").removeData("validator");
$("#form").removeData("unobtrusiveValidation");
$.validator.unobtrusive.parse("#form");