Asp.net mvc 我如何才能学会停止担忧并热爱ASP.NET MVC表单?
MVC鼓励RESTful URL,但HTML表单本质上会将数据附加到查询字符串值中。我的操作将“text”作为字符串参数。我的表格是:Asp.net mvc 我如何才能学会停止担忧并热爱ASP.NET MVC表单?,asp.net-mvc,asp.net-mvc-routing,Asp.net Mvc,Asp.net Mvc Routing,MVC鼓励RESTful URL,但HTML表单本质上会将数据附加到查询字符串值中。我的操作将“text”作为字符串参数。我的表格是: <% using(Html.BeginForm("Action", "Controller")) { %> <%= Html.TextBox("text") %> <input type="submit" value="submit" /> <% } %> 您的操作可以映射到两个不同的URL: ~/Con
<% using(Html.BeginForm("Action", "Controller")) { %>
<%= Html.TextBox("text") %>
<input type="submit" value="submit" />
<% } %>
您的操作可以映射到两个不同的URL:
~/Controller/Action/textvalue
感谢您的路线图{Controller}/{Action}/{text}~/Controller/Action?text=textvalue
从表单提交时编辑:我查看了维基百科是如何做到这一点的。它对“formgetter”和实际的restful URL使用单独的操作,并根据需要从一个URL重定向到另一个URL。我想这是最好的方法。浏览器的默认操作是将GET表单中的值放入查询字符串中。他们都会选择一条路线,并采取相同的行动
{ controller = "Controller", "Action", id = null, text = "textvalue" }
由于存在默认路由,这将正确解决
我能想到的唯一办法就是改变表格。与其提交“GET”请求,不如将其作为PUT提交,因为您不需要POST(您可以使用JS,使用友好的降级POST)并重定向到GET。浏览器的默认操作是将GET表单中的值放入查询字符串中。他们都会选择一条路线,并采取相同的行动
{ controller = "Controller", "Action", id = null, text = "textvalue" }
由于存在默认路由,这将正确解决
我能想到的唯一办法就是改变表格。不要提交“GET”请求,而是作为PUT提交,因为你不需要POST(你可以使用JS,使用友好的降级到POST)并重定向到GET。所以最好的做法是对表单提交和URL使用单独的操作?查看#13 on POST redirect GET:IMO,POST有点多。您可以使用JS创建put请求。(Put请求不会创建典型的浏览器“重新提交帖子数据?”弹出窗口。)因此,最佳做法是对表单提交和URL使用单独的操作?请查看#13 on POST Redirect Get:IMO,帖子有点多。您可以使用JS创建put请求。(Put请求不会创建典型的浏览器“Resubmit POST data?”弹出窗口。)如果第一个表单没有,我不认为第二个表单会违反REST。要么两者都是,要么两者都不是。如果查询字符串完美地描述了URL是什么,那么为什么我们首先要进行URL路由?我们也可以使用Controller.aspx?action=action&id=id表单?如果第一个表单没有,我不认为第二个表单会违反REST。要么两者都是,要么两者都不是。如果查询字符串完美地描述了URL是什么,那么为什么我们首先要进行URL路由?我们还可以使用Controller.aspx?action=action&id=id表单?