asp.net 4.0如何在Web表单上设置表单操作。令人费解的结果

时间:2014-04-16 00:06:47

标签: .net webforms asp.net-4.0

有谁知道asp.net 4.0如何设置网络表单的操作属性的值。当网址在页面名称后面包含“/”时,我遇到了action属性没有正确值的情况。

例如,取网址 localhost / test / Default.aspx

页面加载后,在浏览器中查看页面源时,action属性看起来像 action =“Default.aspx”,这是预期的。

现在,使用相同的网址,但在页面名称和一些文字之后添加/,例如 localhost / test / Default.aspx / www.xyz.com

页面加载后,在浏览器中查看页面源时,action属性看起来像 action =“www.xyz.com”。如您所见,action属性的值是在/.

之后输入的值

有没有人碰到这个?这只发生在asp.net 4.0应用程序中。在asp.net 2.0应用上进行相同测试时,action属性始终为 Default.aspx

我无法找到对此行为的解释,以及如何消除它。

由于

1 个答案:

答案 0 :(得分:0)

似乎是ASP.NET的默认行为。

查看HtmlForm类的GetActionAttribute()代码(通过反编译工具),它接受最后一个/之后存在的任何内容,并将其设置为action属性的值。

重写此方法的一种方法是将表单的RenderingCompatibility设置为:

this.form1.RenderingCompatibility = new Version(4,5);

当它看到这个时,它会将action属性设置为./