2011-03-28 75 views
0

我正在嘗試ASP.NET MVC2。我有一個名爲SearchController的控制器和一個名爲Search的視圖文件夾,其中包含Search.aspx。 在我的控制,我有:asp.net mvc2表單發佈不斷擴展瀏覽器網址

[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。但是,當我第二次點擊該按鈕時,瀏覽器URL變爲http://localhost:1824/Search/Search/Post,我得到了404。我做錯了什麼?非常感謝。

回答

0

你需要一個/在你的行動網址的開頭。

爲什麼不允許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"> 
0

您可以嘗試將action設置爲/Search/Post,但如果您的應用安裝到非根位置,則會中斷。一個可靠的方法是使用BeginForm的HtmlHelper,而不是手動編寫form標籤使用類似

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

感謝,這工作。然而,在這篇文章http://weblogs.asp.net/scottgu/archive/2008/09/02/asp-net-mvc-preview-5-and-form-posting-scenarios.aspx然後斯科特格思裏不使用這段代碼和推測他的代碼工作正常 - 任何想法這裏發生了什麼? – Journeyman 2011-03-28 12:33:48

1

您正在使用表單操作的相對URL。我建議使用UrlHelper的Html表單助手。這兩個都會產生合適的絕對網址。用剃刀語法例子:

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

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