Ich verwende jQuery.load()
, um eine Teilansicht zu rendern. Dieser Teil sieht so aus:
$('#sizeAddHolder').load(
'/MyController/MyAction', function () { ... });
Der Code für Aktionen in meinem Controller sieht wie folgt aus:
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);
}
Ich gebe eine Teilansicht zurück, die ungefähr so aussieht:
<% using (Html.BeginForm("MyAction", "MyController")) {%>
<%= Html.ValidationSummary(true) %>
Objekt erstellen
Felder
<%= Html.LabelFor(model => model.ObjectProp1) %>
<%= Html.TextBoxFor(model => model.Size.ObjectProp1) %>
<%= Html.ValidationMessageFor(model => model.ObjectProp1) %>
div class="editor-label">
<%= Html.LabelFor(model => model.ObjectProp2) %>
<%= Html.TextBoxFor(model => model.ObjectProp2) %>
<%= Html.ValidationMessageFor(model => model.ObjectProp2) %>
<% } %>
Die Client-seitige Validierung funktioniert in diesem Fall nicht. Außerdem ist das Skript, das Validierungsnachrichten enthält, auch nicht in der zurückgegebenen Ansicht enthalten. Beide Eigenschaften in meiner Modelklasse haben die Attribute Required
und StringLength
. Gibt es einen Weg, die Client-seitige Validierung in einer Ansicht auszulösen, die wie diese geladen wurde?