有谁知道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
我无法找到对此行为的解释,以及如何消除它。
由于
答案 0 :(得分:0)
似乎是ASP.NET的默认行为。
查看HtmlForm类的GetActionAttribute()代码(通过反编译工具),它接受最后一个/之后存在的任何内容,并将其设置为action属性的值。
重写此方法的一种方法是将表单的RenderingCompatibility设置为:
this.form1.RenderingCompatibility = new Version(4,5);
当它看到这个时,它会将action属性设置为./