2012-04-13 4 views
3

Ich bin ziemlich neu mit MVC. Ich habe eine Ansicht mit jQuery-Tabs (wie unten) darauf.MVC3 - Wie Registerkarte Register Index auf Postback

<div class="demo"> 
<div id="demoTabs"> 
    <ul aria-labelledby="demoTabsLabel"> 
     <li><a href="#basicInfo">Basic Information</a> </li> 
     <li><a href="#address">Address</a> </li> 
     <li><a href="#tabbs">Tab 3</a> </li> 
    </ul> 
    <div id="basicInfo"> 
     @using (Html.BeginForm("Create", "Organisation", FormMethod.Post)) { 
     <div class="editor-label"> 
      @Html.LabelFor(model => @Model.Name) 
     </div> 
     <div class="editor-field"> 
      @Html.EditorFor(model => @Model.Name) @Html.ValidationMessageFor(model => @Model.Name) 
     </div> 
     <div> 
      <a class="nexttab" href="#address"> 
       <input id="Submit2" type="submit" value="Continue" /></a> 
     </div> 
     } 
    </div> 
    <div id="address"> 
     @Html.Label("Address") <a class="nexttab" href="#tabbs"> 
      <input id="Submit4" type="submit" value="Continue" /></a> 
    </div> 
    <div id="tabbs"> 
     @Html.Label("optional") </fieldset> 
     <input id="Submit5" type="submit" value="Submit" /> 
    </div> 
</div> 

Wenn der Benutzer drücken Sie die Taste bewegt sich die Steuerung zum nächsten Reiter mit dem Skript unten fortsetzen.

$("#demoTabs").tabs(); 
$(".nexttab").click(function() { 
    $("#demoTabs").tabs("select", this.hash); 
}); 

Aber wenn die Anfrage von der Steuerung kommt zurück nach den Informationen zu speichern, lädt er die Seite und bewegt die Steuerung zum ersten Register wieder.

Können Sie mir bitte den richtigen Weg vorschlagen?

Vielen Dank

-Controller

[HttpPost] 
public ActionResult Create(Xrm.Account account) 
{ 
    //create 
    org = orgModel.CreateOrUpdateOrg(account); 
    return Redirect(Url.Action("Create", "Organisation") + "#tabbs");   
} 
+0

So etwas wie der Zauberer? –

Antwort

3

In Ihrem Controller, verwenden Sie diese Zeile in Action zurückzukehren. Sie müssen den richtigen Registerkarte Namen am Ende anfügen:

return Redirect(Url.Action("Action", "Controller") + "#tabname"); 

dann auf Ihrer Seite, fügen Sie diesen Code die richtigen Registerkarte auf Last zeigen:

$("#demoTabs").tabs("select", window.location.hash); 
+0

Danke @Rory McCrossan, '$ (" # demoTabs "). Registerkarten (" select ", window.location.hash);' funktioniert nicht. Muss ich es unter "$ (Dokument) .ready (Funktion"? – Scorpion

+0

bitte überprüfen Sie mu aktualisierten Code. – Scorpion

1

Änderung Ihrer Funktion

$(".nexttab").click(function() { 
    $("#demoTabs").tabs("select", this.hash); 
}); 

zu diese

$(".nexttab").click(function() { 
     $("#demoTabs").tabs("select", this.hash); 
window.location.hash = this.hash 
    }); 

und Funktion

$("#demoTabs").tabs(); 

zu

$("#demoTabs").tabs("select", window.location.hash); 
+0

danke. Jetzt bekomme ich eine Fehlermeldung "Microsoft JScript Fehler: Ausnahme geworfen und nicht gefangen". Grüße – Scorpion

+0

Versuchen Sie Runnng ohne den Debugger angeschlossen –

+0

macht keinen Unterschied.Aktuell verliert es den Tab-Index, wenn die Steuerung vom Controller zurückkommt. – Scorpion

Verwandte Themen