【问题标题】:ASP.NET MVC 2 Ajax does not work in IE8, but works in Safari and FirefoxASP.NET MVC 2 Ajax 在 IE8 中不起作用,但在 Safari 和 Firefox 中起作用
【发布时间】:2011-01-24 05:09:26
【问题描述】:

我正在制作一个带有 MVC 2 的 Ajax 支持的选项卡导航控件:Ajax.BeginForm。出于某种原因,它在 Safari 和 Firefox 中运行良好,但是当我在 IE8 中加载它时,浏览器将 Ajax 方法(控制器操作)的返回加载到整个页面中(即像进行非 ajax 提交一样)。

加价:

<% using (Ajax.BeginForm(new AjaxOptions { UpdateTargetId = "tabContent"})) { %>
<ul id="tabnav">
    <li id="TabOne"><a href="#" onclick="updateTab(event)">Tab 1</a></li>
    <li id="TabTwo"><a href="#" onclick="updateTab(event)">Tab 2</a></li>
    <li id="TabThree"><a href="#" onclick="updateTab(event)">Tab 3</a></li>
    <%: Html.Hidden("tabId") %>
</ul>
<% } %>
<div id="tabContent"></div>

这是 JavaScript:

function updateTab(evt) {
    var $target = $(evt.target);
    var selectedTabId = $target.parent().attr('id');

    $('#tabId').val(selectedTabId);

    // submit the form AJAXly
    $target.closest('form').submit();

    // hide the current content
    $('#tabContent').empty();

    // update the selected tab
    $('#tabnav li').removeClass('currentTab');
    $('#' + selectedTabId).addClass('currentTab');

    // suppress default link action
    return false;
}

控制器:

    [HttpPost]
    public ActionResult Index(string tabId)
    {
        ViewData["tabId"] = tabId;

        // redirect to the selected tab
        return RedirectToAction("Index", tabId);
    }

【问题讨论】:

    标签: jquery ajax internet-explorer asp.net-mvc-2


    【解决方案1】:

    所以你在使用 jQuery 并且仍然有那些与过时的 MSAjax 框架一起使用的 Ajax.* 助手?我不会。你可以看看优秀的jquery UI tabs,它会让你的代码变得更加简单:

    <ul id="tabnav">
        <li id="TabOne"><%= Html.ActionLink("Tab 1", "Tab1") %></li>
        <li id="TabTwo"><%= Html.ActionLink("Tab 2", "Tab2") %></li>
        <li id="TabThree"><%= Html.ActionLink("Tab 3", "Tab3") %></li>
    </ul>
    <div id="tabContent"></div>
    

    然后:

    $(function() {
        $('#tabnav').tabs({
            load: function(event, ui) {
                $('a', ui.panel).click(function() {
                    $('#tabContent').load(this.href);
                    return false;
                });
            }
        });
    });
    

    在您的控制器中,您将拥有与每个选项卡对应的控制器操作,这些操作将返回部分 HTML,该部分 HTML 将使用 AJAX 注入tabContent div。

    【讨论】:

      猜你喜欢
      • 2018-04-20
      • 1970-01-01
      • 2013-01-04
      • 1970-01-01
      • 1970-01-01
      • 2011-05-03
      • 1970-01-01
      • 1970-01-01
      • 2011-03-24
      相关资源
      最近更新 更多