ASP .NET MVC 4 Ansicht mit zwei seitlichen Blick auf mit einer form, die in jedem

In meiner MVC 4 Anwendung habe ich eine Index-Ansicht. In dieser Ansicht habe ich zwei div-tags, wo eine Teilweise Ansicht gerendert wird. Es gibt zwei Schaltflächen, die beim anklicken schaltet zwischen diesen zwei divs mit jQuery. Die Teilweise Ansichten sind stark typisiert mit seinem Modell jeder.

Frage:

Wie gebe ich die Modelle, die teilweise den Blick?
Wie gehe ich mit POST-requests aus der Teilweisen Ansichten?
In der POST-action-Methode(N), wenn ModelState ungültig ist wie kann ich re-Rendern der Ansicht, dass die Kenntnis der ModelStae?

Ist Teilweise auf den Weg zu gehen in diesem Szenario?
Gibt es bessere Wege, dies zu erreichen mit MVC 4?

Jede Hilfe ist willkommen.

Hier ist, was ich versucht habe, ohne Erfolg:

Index.cshtml

<div id="token">
   <!-- insert Token based PartialView -->
@{
    //Html.RenderPartial("_TokenPartial");
    Html.RenderAction("TokenBased");
}

<div id="credentials">
  <!-- insert Credentials based PartialView -->
@{
   //Html.RenderPartial("_CredentialPartial");
   Html.RenderAction("CredentialsBased");
}
</div>

Habe ich versucht mit HTML.RenderPartial("_partial") konnte aber nicht angeben, die das Modell der partiellen View basiert. Dann habe ich versucht mit Html.RenderAction("TokenBased") und in dieser Aktion gibt die Teilansicht mit einer Instanz des Modells für diese Ansicht:

CredentialController.cs

    public ActionResult TokenBased(string token)
    {
        ...

        return View("_TokenPartial", new TokenModel);
    }

Und hier ist die Teilansicht:

TokenPartial.cshtml

    @model TokenModel

    @using (Html.BeginForm("CreateAgreementToken", "Credential"))
    {
        <div class="formscontent">
            @Html.LabelFor(x => x.Token) <br />
            @Html.TextBoxFor(x => x.Token, new {size = "44" })
            @Html.ValidationMessageFor(x => x.Token)
            <br />
            <br />

            @Html.LabelFor(x => x.Email) <br />
            @Html.TextBoxFor(x => x.Email, new {size = "30" })
            @Html.ValidationMessageFor(x => x.Email)
            <br />
            <br />

            @Html.CheckBoxFor(x => x.AcceptSubsTerms, new { value = "SubsTerms"})
            @Html.LabelFor(x => x.AcceptSubsTerms)
            @Html.ValidationMessageFor(x => x.AcceptSubsTerms)
            @Html.ActionLink("SubsTermsLinkText", "Subscription", null, new {target = "_blank"})
            <br />
            <br />
        </div>
        <br />

        <input class="mainbutton" type="submit" value="CreateAgreement_btn_txt"/><br />

    }

Und hier ist der POST-action-Methode:

    [HttpPost]
    public ActionResult CreateAgreementToken(TokenModel model)
    {

        if (ModelState.IsValid)
        {
            //Create Agreement
            //
            //

            return RedirectToAction("Welcome");
        }

        //If we got this far, something failed, redisplay form
        ModelState.AddModelError("", "The user credentials provided are incorrect.");

        //Where to redirect to.
        //How to re-render the Index view that's aware of the ModelState errors

        return RedirectToAction("Index");
    }

Umgang mit den Wechselwirkungen zwischen den Controller-action-Methoden, die Index-Ansicht und die Teilansicht wie in den 'normalen' Fall, wo Sie eine Index-Aktion-Methode rendering Index Ansehen der übergabe eine model-Instanz. Und dann in der Index-POST-action-Methode, wenn die Validierung fehl, werden Sie wieder das Formular durch aufrufen der Index-Ansicht übergeben Sie die ungültige Modell.

Danke

InformationsquelleAutor Javid | 2013-01-16

Schreibe einen Kommentar