Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/url/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc asp.net mvc2 form post不断扩展浏览器url_Asp.net Mvc_Url_Asp.net Mvc 2_Http Post - Fatal编程技术网

Asp.net mvc asp.net mvc2 form post不断扩展浏览器url

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();

我正在试用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>


当我第一次单击按钮时,它工作正常,浏览器显示的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">