【问题标题】:MVC3 - How to maintain tab Index on postbackMVC3 - 如何在回发时维护标签索引
【发布时间】:2012-04-13 15:49:41
【问题描述】:

我对 MVC 很陌生。我有一个带有 jQ​​uery 选项卡(如下所示)的视图。

<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");           
}

【问题讨论】:

    标签: jquery asp.net-mvc asp.net-mvc-3 jquery-ui razor


    【解决方案1】:

    在您的控制器中,使用此行返回您的 ActionResult。您需要在末尾附加正确的选项卡名称:

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

    然后在您的页面中,添加此代码以在加载时显示正确的选项卡:

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

    【讨论】:

    • 感谢@Rory McCrossan,$("#demoTabs").tabs("select", window.location.hash); 无法正常工作。我需要将其保留在$(document).ready(function 下吗?
    【解决方案2】:

    改变你的功能

    $(".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);
    

    【讨论】:

    • 谢谢。现在我收到一条错误消息Microsoft JScript error: Exception thrown and not caught。问候
    • 尝试在没有附加调试器的情况下运行
    • 没有任何区别。实际上,当控制从控制器返回时,它会丢失选项卡索引。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-04-15
    • 2014-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多