2011-03-11 76 views
3

我们使用asp.net 4.0和路由与Web表单来创建友好的网址。ASP.net 4.0 Webforms路由回传问题

路由工作正常,只是没有将正确的“操作”值分配给具有多个级别的任何路由的母版页中的表单元素。

例如,浏览到.../customer/12345时的路由(客户/ {customerid})仅在表单的“action”属性中显示12345。问题在于它没有完成,并且任何回发失败并且出现错误“用于访问路径的HTTP动词POST不被允许”如果我将操作更新为“customer/12345”(使用Firebug),则回发工作正常。

使用静态路由(如客户/客户)时,它甚至会出错,它只会将“客户”而不是“客户/客户”放置为表单的操作值。基本上,只把路线的最后一部分放入动作属性而不是整个路线。为什么?

有关如何解决此问题的任何想法?

+1

我进一步发现,我可以通过在Page_Load事件中将表单操作复制为[form1.Action = Request.Url.PathAndQuery;]来解决问题。应该有更好的解决方案吗? – 2011-03-11 12:12:18

回答

2

您可以通过overiding形式行动form1.Action = Request.Url.PathAndQuery;]Page_Load事件

0

看到这个related Topic解决这个问题。 它使用Request.RawUrl而不是Request.Url.PathAndQuery,接缝返回相同的值。