【问题标题】:Error loading page after redirect to an MVC3 action重定向到 MVC3 操作后加载页面出错
【发布时间】:2013-01-12 02:32:54
【问题描述】:

场景:我有一个视图(我们称之为Index.cshtml)将表单发布到控制器操作(我们称之为GetWorkList)。

GetWorkList 运行,然后返回部分视图 WorkReport。之后用户可以通过ModifyDuration操作修改和保存一些数据,这反过来应该返回GetWorkList(和我上面提到的一样)。然后部分视图按应有的方式更新,但我收到一条错误消息:Error loading page 在页面完全加载之前消失。

我应该怎么做才能没有这个错误信息?

控制器代码:

  [HttpGet]
    public ActionResult Index()
    {
        return View();
    }

    [HttpGet]
    public PartialViewResult GetWorkList(string date)
    {
     .....instructions
       return PartialView("WorkReport", model);
    }

      [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult ModifyDuration(string newDuration, string id, string date)
    {
       .....instructions
      return RedirectToAction("GetWorkList", new
        {
            date = date
        });
    }

浏览器提示错误:

【问题讨论】:

  • 不应该 GetWorkList[HttpPost] 而不是 [HttpGet],因为您要发布到此控制器操作?
  • 我使用了[HttpPost],但它不起作用。谢谢!

标签: asp.net-mvc asp.net-mvc-3 post-redirect-get redirecttoaction


【解决方案1】:

如果没有看到您的视图,很难具体说明,但看​​起来错误是因为您正在从作为 POST 请求的一部分呈现的视图中调用部分视图(get 请求成功,而 post 请求失败)。我在您的控制器代码中没有看到任何建议您在 Post 请求中呈现视图的内容,但我想不出更好的解释。例如:

[HttpPost]
public ActionResult DoSomething() 
{
    ...
    return View(Index);
}

在你的Index.cshtml里面:

@Html.Action("GetWorkList")

这是一个例子,我可以看到它以同样的方式失败。因为视图是在 post 请求的上下文中呈现的,所以部分视图也会作为 post 请求而不是 get 被调用。

【讨论】:

    猜你喜欢
    • 2019-02-01
    • 2012-04-24
    • 1970-01-01
    • 2017-06-08
    • 1970-01-01
    • 2023-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多