10 Stimmen

ASP.NET MVC 2 das Laden der Teilansicht mit jQuery - keine Client-seitige Validierung

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?

0voto

user800534 Punkte 1

Im HTML-Datei können Sie so etwas haben:

Entschuldigung dafür, aber ich weiß nicht, wie man einen Link HTML postet. Also könnten Sie einen Link class = "delete", \= value und ein \= "javascript:;" haben****

****Dann habe ich diese Funktion verwendet, um eine Teilansicht zu rendern:

 $(".delete").click(function(event){
          var id = $(".select").attr("id");
          var id2 = event.target.id;
          $.ajax({
                url: "Persona/Delete?idPersona=" + id2.toString(),
                success: function (data) {
                    $("#popUpConfirmar").html(data);
                }
            });

            dialogoPopUp.dialog("open");
        });

Vergessen Sie nicht, dass Sie im Controller eine Aktion wie folgt haben müssen:

    public PartialViewResult Delete(int idPersona)
    {
        PersonaDataAccess personaDataAccess = new PersonaDataAccess();
        Persona persona = personaDataAccess.GetOne(idPersona);
        return PartialView("Delete",persona);
    }****

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X