我正在使用 jQuery.load() 来渲染部分 View 。这部分看起来像这样:
$('#sizeAddHolder').load(
'/MyController/MyAction', function () { ... });
我的 Controller 中的操作代码如下:
public ActionResult MyAction(byte id)
{
var model = new MyModel
{
ObjectProp1 = "Some text"
};
return View(model);
}
[HttpPost]
public ActionResult MyAction(byte id, FormCollection form)
{
// TODO: DB insert logic goes here
var result = ...;
return Json(result);
}
我返回的部分 View 如下所示:
<% using (Html.BeginForm("MyAction", "MyController")) {%>
<%= Html.ValidationSummary(true) %>
<h3>Create my object</h3>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%= Html.LabelFor(model => model.ObjectProp1) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.Size.ObjectProp1) %>
<%= Html.ValidationMessageFor(model => model.ObjectProp1) %>
</div>
div class="editor-label">
<%= Html.LabelFor(model => model.ObjectProp2) %>
</div>
<div class="editor-field">
<%= Html.TextBoxFor(model => model.ObjectProp2) %>
<%= Html.ValidationMessageFor(model => model.ObjectProp2) %>
</div>
<p>
<input type="submit" value="Create" />
</p>
</fieldset>
<% } %>
客户端验证在这种情况下不起作用。此外,包含验证消息的脚本也不包含在返回的 View 中。我的模型类中的两个属性都有 Required
和 StringLength
属性。
有什么方法可以在这样加载的 View 中触发客户端验证吗?
最佳答案
首先,您应该返回部分 View 而不是 View 。
return PartialView(model);
其次,您是否尝试使用 AJAX 加载此部分 View ?在这种情况下,您可能需要使用 jquery.ajax
function ajax_update(path)
$.ajax {
url: path,
success: function(result) {
$('#sizeAddHolder').html(result);
}
return false;
}
关于jquery - ASP.NET MVC 2 使用 jQuery 加载部分 View - 无客户端验证,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2652586/