使用带有ASP.NET </form>的<form>标记的纯旧HTTP GET

时间:2012-06-19 14:22:05

标签: c# asp.net webforms progressive-enhancement

我有一个使用Progressive Enhancement构建的WebForms网站,该网站使用母版页。显然,ASP.NET默认注入标记,因此它可以管理回发。

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

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

显然,.NET正在通过外部拦截请求并回复自身。我可以用JavaScript做到这一点,但后来我将打破我网站的Progressive Enhancement政策。如果没有基本构建ASP.NET服务器控件来管理重定向,这是不可能的?

由于 马丁

3 个答案:

答案 0 :(得分:1)

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

我不记得它是Page还是其中一个链接按钮类,而只是谷歌“PostBackURL”,你应该得到一些好的结果。

答案 1 :(得分:1)

使用表单和ASP.net,您可以使用

访问Get variables
Page.Request.QueryString[<param>];

它像这样使用

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

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

Page.Request.QueryString["name"]

答案 2 :(得分:1)

标记应该在源文件中很明显,并带有runat="server"。但是,不应该在中添加另一个表单标记,而不能有两个<form runat="server">

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

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

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

看看这篇文章,它可能会对您有所帮助:Multiple forms on ASP.NET page