Asp.net mvc 在IE 11中;新标签页";正在web应用程序中导致404错误

Asp.net mvc 在IE 11中;新标签页";正在web应用程序中导致404错误,asp.net-mvc,internet-explorer-11,Asp.net Mvc,Internet Explorer 11,我有一个asp.NETMVC应用程序。有一个搜索表单,有时用户使用很长的字符串进行搜索。由于查询参数长度有限制,我做了以下操作 我已将此表格作为POST方法制作 我在MVC控制器中提到,仅为“POST”请求提供此页面 这在所有浏览器中都能正常工作。与往常一样,IE在以下场景中会导致问题:) 如果用户更频繁地使用搜索功能,即将结果页面添加到“频繁”下的“新选项卡”页面的互动程序中(请参阅)。由于结果页是POST only,所以每当用户单击互动程序时,它都会给出404错误,用户对此感到恼火 是否有任

我有一个asp.NETMVC应用程序。有一个搜索表单,有时用户使用很长的字符串进行搜索。由于查询参数长度有限制,我做了以下操作

  • 我已将此表格作为POST方法制作
  • 我在MVC控制器中提到,仅为“POST”请求提供此页面 这在所有浏览器中都能正常工作。与往常一样,IE在以下场景中会导致问题:)

    如果用户更频繁地使用搜索功能,即将结果页面添加到“频繁”下的“新选项卡”页面的互动程序中(请参阅)。由于结果页是POST only,所以每当用户单击互动程序时,它都会给出404错误,用户对此感到恼火

    是否有任何元标记或javascript告诉IE不要将此特定页面添加到收藏夹互动程序?或者将主页添加到互动程序而不是搜索页面

    注意:我知道若我允许GET请求,404错误将消失,但我不想这样做。否则,我必须处理这个问题并重定向页面


    编辑:我试过谷歌,但找不到任何有用的信息,假设这是你的帖子:

    [HttpPost]
    public ActionResult Search(string p)
    {
         var results = SearchResults(p);
    
         return View("Results", results);
    }
    
    您可以使用动词GET添加另一个动作方法,如下所示:

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

    这样,如果用户单击互动程序,他们将被重定向到搜索页面,准备开始在搜索表单中键入内容。

    假设这是您的POST操作:

    [HttpPost]
    public ActionResult Search(string p)
    {
         var results = SearchResults(p);
    
         return View("Results", results);
    }
    
    您可以使用动词GET添加另一个动作方法,如下所示:

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

    这样,如果用户单击互动程序,他们将被重定向到搜索页面,准备开始在搜索表单中键入内容。

    这看起来像是浏览器设置,因此您无法更改。如果有人使用频繁访问的页面进行点击,您可以在帖子发送到适当的URL后进行AJAX调用和重定向。谢谢您的评论@d3l33t。我想我会同意丹尼尔的建议。这看起来像是一个浏览器设置,所以你无法更改它。如果有人使用频繁访问的页面进行点击,您可以在帖子发送到适当的URL后进行AJAX调用和重定向。谢谢您的评论@d3l33t。我想我会同意丹尼尔的建议。谢谢你,丹尼尔。我想用一种通用的方式来处理这个问题,而不是按事件处理。但到目前为止,这是我得到的最好的。谢谢你,丹尼尔。我想用一种通用的方式来处理这个问题,而不是按事件处理。但到目前为止,这是我得到的最好的。