【问题标题】:asp.net mvc2 form post keeps extending the browser urlasp.net mvc2 form post不断扩展浏览器url
【发布时间】:2011-03-28 12:24:58
【问题描述】:

我正在试用 ASP.NET MVC2。我有一个名为 SearchController 的控制器和一个名为 Search 的包含 Search.aspx 的视图文件夹。 在我的控制器中,我有:

[AcceptVerbs(HttpVerbs.Post)]
        public ActionResult Post()
        {
            HPSLucene.Models.Arbitrary arb = new HPSLucene.Models.Arbitrary();
            arb.Title = "Post received";
            return View("Search",arb);
        }

在我看来,我有:

<form action="Search/Post" method="post">
    <label><% Response.Write(Model.Title); %></label>
    <input type="Submit" Value="First" Name="submitButton"/>
    </form>

当我第一次单击该按钮时它工作正常,并且浏览器显示一个http://localhost:1824/Search/Post 的网址。但是,当我第二次单击该按钮时,浏览器 url 更改为 http://localhost:1824/Search/Search/Post 并且我得到 404。我做错了什么?非常感谢。

【问题讨论】:

    标签: asp.net-mvc url asp.net-mvc-2 http-post


    【解决方案1】:

    您正在为表单操作使用相对 url。我建议使用 UrlHelper 和 Html 表单助手。这两者都会产生合适的绝对网址。 Razor 语法示例:

     <form action="@Url.Action( "post", "search" )" ...
    

     @using(Html.BeginForm( "post", "search" ))
       {
        ...
       }
    

    【讨论】:

      【解决方案2】:

      您需要在操作网址的开头使用 /。

      为什么不允许 asp.net 为您处理和使用:

      <% using (Html.BeginForm("Post", "Search")) { %>
      
      <label><% Response.Write(Model.Title); %></label>
      <input type="Submit" Value="First" Name="submitButton"/>
      
      <% } %>
      

      哪个会给你

      <form action="/Search/Post" method="post">
      

      【讨论】:

        【解决方案3】:

        您可以尝试将action 设置为/Search/Post,但如果您的应用安装到非root 位置,则会中断。一种可靠的方法是使用类似的东西

        <form action="<%= Url.Content("~/Search/Post") %>" ...
        

        【讨论】:

        【解决方案4】:

        尝试使用BeginForm HtmlHelper 而不是手动编写form 标签:

        http://msdn.microsoft.com/en-us/library/dd505244.aspx

        听起来浏览器将其解释为相对 URL,并且当当前 URL 在 /Search/ 下时,它会使其相对于该 URL。 HtmlHelper 应该解决这个问题,但是 YMMV。

        【讨论】:

          猜你喜欢
          • 2011-02-22
          • 2011-09-03
          • 2017-04-11
          • 2013-04-03
          • 2016-05-12
          • 1970-01-01
          • 1970-01-01
          • 2011-06-22
          • 1970-01-01
          相关资源
          最近更新 更多