首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用MVC3将局部视图创建为选项卡

使用MVC3将局部视图创建为选项卡
EN

Stack Overflow用户
提问于 2012-04-07 11:14:23
回答 2查看 3.1K关注 0票数 1

我在一个应用程序中有2-3个不同的视图,并且有主视图。我的主视图,我想将这2-3个视图显示为选项卡。因此,如果用户单击选项卡,则前一个视图应该隐藏,而新视图应该打开。我正在进行Ajax调用,同时打开一个新选项卡,但其他视图没有打开。我如何实现这一点?

代码语言:javascript
复制
$('#tabRating').click(function () {
        $.ajax({
            "dataType": 'json',
            "type": "get",

            "url": '@Url.Action("TabsSelect", "Employee")'



        });

    });


public ActionResult TabsSelect()
    {
        return PartialView("Rating");
    }
EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-04-08 02:39:50

正如邓肯上面建议的那样,使用它的最好的框架是JQuery UI Tabs,我一直在使用这个非常有趣的框架。

下面是一些代码示例。

该视图有一个利用jquery.tabs()功能的Jquery脚本:

代码语言:javascript
复制
<script type="text/javascript">
    $(document).ready(function() {
        $("#tabs").tabs();
        getContentTab (1);
    });

    function getContentTab(index) {
        var url='@Url.Content("~/SiteAdmin/AjaxGetTab")/' + index;
        var targetDiv = "#tabs-" + index;
        var ajaxLoading = "<img id='ajax-loader' src='@Url.Content("~/Content")/ajax-loader.gif' align='left' height='28' width='28'>";

        $(targetDiv).html("<p>" + ajaxLoading + " Loading...</p>"); 
        $.ajax({
          type: 'get',
          url: url,
          cache: false,
          success: function(result) {
            $(targetDiv).html(result);
          }
        });           


    }

这是我的控制器操作方法,它传递了打包所需的局部视图。

代码语言:javascript
复制
     /// <summary>
    /// AJAX action method to obtain the correct Tab to use.
    /// </summary>
    /// <param name="index">Tab number</param>
    /// <returns>Partial View</returns>
    public ActionResult AjaxGetTab(int id)
    {
        string partialViewName = string.Empty;
        object model = null;

        //--Decide which view and model to pass back.
        switch (id)
        {
            case 1:
                partialViewName = "_TransactionType";
                model = db.TransactionTypes.ToList();
                break;
            case 2:
                partialViewName = "_DirectionType";
                model = db.DirectionTypes.ToList();
                break;
            case 3:
                partialViewName = "_UserType";
                model = db.UserTypes.ToList();
                break;
            case 4:
                partialViewName = "_CurrencyType";
                model = db.CurrencyTypes.ToList();
                break;
            case 5:
                partialViewName = "_tabError";
                break;

        }

        return PartialView(partialViewName,model);
    }
}

这使我可以运行多个选项卡,并分别检查每个选项卡所需的数据。

用于选项卡的JQuery UI使得清晰地实现选项卡变得非常容易。

票数 0
EN

Stack Overflow用户

发布于 2012-04-07 17:30:18

您正在使用的jQuery代码发出了一个ajax调用,但是没有对它返回的部分视图做任何事情。如果您想要将其插入到页面中,则需要提供一个回调函数来执行此操作,例如:

代码语言:javascript
复制
$.ajax({
    type: "get",
    url: '@Url.Action("TabsSelect", "Employee")',
    success: function (data) {
        $("#thingToPutTabContentIn").html(data);
    }
});

(请注意,假设您的“评级”部分只是一个普通的部分视图,那么您并不想要您拥有的"dataType": 'json'位)。为了更简单地做同样的事情,你可以使用jQuery的load()方法:

代码语言:javascript
复制
$("#thingToPutTabContentIn").load('@Url.Action("TabsSelect", "Employee")');

话虽如此,如果你还没有这样做,你应该看看jQuery UI's Tabs,它的设计就是为了做你需要做的事情--只要看看ajax示例,看看你会如何使用它。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10051425

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档