RedirectToAction无法在IE(Internet Explorer - 8+)MVC4 Razor中运行

时间:2014-03-14 10:55:26

标签: javascript jquery asp.net-mvc razor model-view-controller

我有一个事件页面,在创建新事件(创建动作调用)后,我重定向到该事件控制器的Index方法。

我使用Ajax将数据发布到控制器。

@using (Ajax.BeginForm("Create", "Events", new AjaxOptions
            {
                InsertionMode = InsertionMode.Replace,
                HttpMethod = "POST",
                OnSuccess = "updateSuccess"
            }, new { @id = "updateEventForm" }))
            {

在将数据成功保存到服务器的同时,它将调用“ updateSuccess ”javascript方法,其中我将整个索引页面作为html在数据中作为参数,如下所示,

function updateSuccess(data)
{
   console.log(data);
}

我只需要通过此Index方法调用

以html的形式从服务器获取所有更新的数据

索引方法:

public ActionResult Index(int SubscriptionID = 0)
            {
                try
                {
                    return PartialView(Events.GetAllEventsWithoutSubscription());
                }
                catch (Exception ex)
                {
                    throw ex;
                }    
            }

创建方法:

[HttpPost]
public ActionResult Create(Events objEvents)
        {
            try
            {
                int Result = CreateEvent(objEvents);
                    return RedirectToAction("Index", new { SubscriptionID = objEvents.SubscriptionID });
            }
            catch (Exception ex)
            {
                throw ex;
            }
        }

我不想重定向到索引。我只是希望通过索引更新HTML以仅通过jquery更新索引表。 但在IE8 +版本中,不会以某种方式调用RedirectAction。 请尽快帮忙。

1 个答案:

答案 0 :(得分:0)

如果您通过AJAX执行此操作,为什么不直接返回Index方法的结果?:

[HttpPost]
public ActionResult Create(Events objEvents)
{
    try
    {
        int Result = CreateEvent(objEvents);
        return Index(SubscriptionID = objEvents.SubscriptionID);
    }
    catch (Exception ex)
    {
        throw ex;
    }
 }

这样,您的浏览器就不必再向服务器发出请求以获得结果。如果您以传统方式(没有AJAX)发出POST请求,并且不希望用户按下按RedirectToAction的刷新按钮再次发送该表单,则F5是有用的。但是使用AJAX,你不会遇到这个问题。