Asp.net mvc asp.net mvc2 form post不断扩展浏览器url
我正在试用ASP.NET MVC2。我有一个名为SearchController的控制器和一个名为Search的视图文件夹,其中包含Search.aspx。 在我的控制器中,我有:Asp.net mvc asp.net mvc2 form post不断扩展浏览器url,asp.net-mvc,url,asp.net-mvc-2,http-post,Asp.net Mvc,Url,Asp.net Mvc 2,Http Post,我正在试用ASP.NET MVC2。我有一个名为SearchController的控制器和一个名为Search的视图文件夹,其中包含Search.aspx。 在我的控制器中,我有: [AcceptVerbs(HttpVerbs.Post)] public ActionResult Post() { HPSLucene.Models.Arbitrary arb = new HPSLucene.Models.Arbitrary();
[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>
当我第一次单击按钮时,它工作正常,浏览器显示的url为。但是,当我第二次单击按钮时,浏览器url变为,我得到一个404。我做错了什么?非常感谢。您可以尝试将
操作设置为/Search/Post
,但如果您的应用程序安装到非根目录位置,则会中断。一个可靠的方法是使用
<form action="<%= Url.Content("~/Search/Post") %>" ...
尝试使用BeginForm
HtmlHelper,而不是手动编写表单
标记:
这听起来像是浏览器将其解释为一个相对URL,当当前URL位于/Search/
下时,它会使其相对于该URL。HtmlHelper应该对此做出解释,但是YMMV。您正在为表单操作使用相对url。我建议使用UrlHelper或Html表单helper。这两种方法都将生成合适的绝对URL。使用Razor语法的示例:
<form action="@Url.Action( "post", "search" )" ...
在操作url的开头需要一个/
为什么不允许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">
谢谢,这很有效。然而,在这篇文章中,Scott Guthrie没有使用这段代码,并且他的代码可能工作正常-知道这里发生了什么吗?
<form action="/Search/Post" method="post">