2012-04-13 2 views
3

Я совершенно новый с MVC. У меня есть представление с вкладками jQuery (как показано ниже).MVC3 - Как сохранить вкладку Индекс по обратной передаче

<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> 

Когда пользователь нажал кнопку продолжить контроль переходит к следующей вкладке, используя приведенную ниже сценарий.

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

Но когда запрос возвращается из контроллера после сохранения информации, он перезагружает страницу и перемещает управление первой вкладке снова.

Не могли бы вы предложить мне правильный способ?

Большое спасибо

Контроллер

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

Что-то вроде волшебника? –

ответ

3

В контроллере, используйте эту строку, чтобы вернуться к ActionResult. Вам нужно добавить правильное название вкладки в конце:

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

Затем на странице, добавьте этот код, чтобы показать вкладку прямо на нагрузке:

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

Спасибо @Rory McCrossan, '$ (" # demoTabs "). Tabs (" select ", window.location.hash);' не работает. Мне нужно сохранить его под '$ (document) .ready (function'? – Scorpion

+0

, пожалуйста, проверьте обновленный код mu. – Scorpion

1

изменения вашей функции

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

в это

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

и функция

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

в

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

спасибо. Теперь я получаю сообщение об ошибке« Ошибка Microsoft JScript: Исключение брошено и не поймано ». С уважением – Scorpion

+0

попробуйте запустить без отладчика, подключенного –

+0

, не имеет никакого значения. Фактически он потеряет индекс вкладки, когда управление возвращается с контроллера. – Scorpion

Смежные вопросы