1

我有一个使用主页面的渐进增强构建的 WebForms 站点。显然,ASP.NET 默认注入标签,因此它可以管理回发。

我需要一种方法来执行以下操作

<form action="new_url" method="get">
 <input ... />
</form>

显然,.NET 正在用外部拦截请求并将其发回给自己。我可以用 JavaScript 做到这一点,但我会打破我网站的渐进增强策略。如果没有本质上构建一个 ASP.NET 服务器控件来管理重定向,这是不可能的吗?

谢谢马丁

4

3 回答 3

1

标签应该在您的源文件中清晰可见,带有runat="server". 但是,应该不可能在另一个表单标签中添加另一个表单标签并且不能有两个<form runat="server">.

因此,实现此目的的一种方法是将表单附加到现有表单之后。您当前的 MasterPages / Pages / UserControls 设置可能无法实现,特别是如果您<form runat="server">在 MasterPage 中有标签。

因此,您可以使用嵌套母版页重新评估您的结构,以便您可以选择哪些页面将实际使用 PostBack 功能并<form>为其他页面使用较少的 MasterPage。

另一种方法是使用 javascript 从某些字段构建 URL。

看看这篇文章,它可能会对你有所帮助:ASP.NET 页面上的多个表单

于 2012-06-19T15:38:22.813 回答
1

使用表单和 ASP.net,您可以访问 Get 变量

Page.Request.QueryString[<param>];

它是这样使用的

<form action="new_url" method="get">
    <input type="text" id="txtName" name="name" />
</form>

在您的 page_load 方法或提交页面中,您可以使用此代码访问输入字段

Page.Request.QueryString["name"]
于 2012-06-19T14:36:56.480 回答
1

我相信 Page 类上有一个名为“PostBackUrl”的属性,您可以使用它来告诉 ASP.NET 将回发发送到哪里。

我不记得它是页面还是链接按钮类之一,但只是谷歌“PostBackURL”,你应该会得到一些好的结果。

于 2012-06-19T14:30:54.433 回答