我有一个使用渐进式增强构建的WebForms网站,它使用母版页。 显然,默认情况下,ASP.NET 会注入标记,以便它可以管理回发。
我需要一种方法来执行以下操作
<form action="new_url" method="get">
<input ... />
</form>
显然,.NET 正在用外部拦截请求并回发到自身。 我可以用JavaScript做到这一点,但随后我会破坏我网站的渐进式增强政策。 如果不从根本上构建一个 ASP.NET 服务器控件来管理重定向,这是不可能的吗?
谢谢马丁
标签在源文件中应该清晰可见,并带有runat="server"
.但是,不应该在另一个表单标签中添加另一个表单标签,并且您不能有两个<form runat="server">
。
因此,实现此目的的一种方法是将表单附加到现有表单之后。使用当前的母版页/页/用户控件设置可能无法做到这一点,尤其是在母版页中获得了<form runat="server">
标记时。
因此,您可以使用嵌套母版页重新评估结构,以便可以选择哪些页面将实际使用回发功能,并对其他页面使用<form>
较少的母版页。
另一种方法是使用javascript从某些字段构建URL。
看看这篇文章,它可能会帮助你: ASP.NET 页面上有多个表单
我相信 Page 类上有一个名为"PostBackUrl"的属性,您可以使用它来告诉 ASP.NET 将回发发送到何处。
我不记得是页面还是链接按钮类之一,但只是谷歌"PostBackURL",你应该得到一些好的结果。
使用表单和 ASP.net,您可以通过以下方式访问获取变量
Page.Request.QueryString[<param>];
它是这样用的
<form action="new_url" method="get">
<input type="text" id="txtName" name="name" />
</form>
在page_load方法或提交页面中,您可以使用此代码访问输入字段
Page.Request.QueryString["name"]