我使用jQuery.load()
來渲染局部視圖。這部分看起來是這樣的:ASP.NET MVC 2使用jQuery加載部分視圖 - 無客戶端驗證
$('#sizeAddHolder').load(
'/MyController/MyAction', function() { ... });
在我的控制器操作的代碼如下:
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);
}
我回來,看起來像這樣的局部視圖:
<% 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>
<% } %>
在這種情況下,客戶端驗證不起作用。包含驗證消息的腳本還包含在返回的視圖中。我的模型類中的兩個屬性都具有Required
和StringLength
屬性。 有沒有什麼辦法來觸發客戶端驗證的視圖中已經這樣加載?
感謝您的寶貴信息。我已經糾正了這些錯誤,但這並沒有真正改變。在兩種情況下,呈現的html都完全相同,因爲'load()'獲取html的方式與'ajax()'使用XMLHttpRequest和'返回View(模型)'的方式相同,如果不存在SomeAction.aspx將呈現SomeAction.ascx 。看看這裏:http://stackoverflow.com/questions/2043394/what-is-the-difference-between-a-view-and-a-partialview-in-asp-net-mvc 所以主要問題是仍然存在:沒有客戶端驗證;沒有包含驗證消息的腳本.. – 2010-04-16 13:37:17
上面的代碼沒有解決原始問題 – 2010-07-29 21:02:48
他也可以返回一個視圖,只要他返回的視圖沒有使用相同的主頁面它被稱爲 – Omu 2010-09-27 19:49:13