gpt4 book ai didi

c# - 在 C# ASP.NET 3.5 中更改 HtmlForm 操作

转载 作者:太空狗 更新时间:2023-10-29 23:09:18 27 4
gpt4 key购买 nike

我有一个表单

<form id="form" action="" method="post" runat="server">

在 C# 代码隐藏中通过访问时

HtmlForm form = (HtmlForm)this.FindControl("form");

并试图改变行为

form.Attributes.Add("action","./newpage.aspx?data=data");

form.Attributes["action"] = "./newpage.aspx?data=data");

没有改变。表单仍然路由到同一页面。如何在代码隐藏中动态更改表单的操作?

额外的细节:我有一个包含 get 变量的页面。该获取变量需要在表单的操作部分中发送。因此,page1 响应具有 getvar1。 page1 上的表单需要发送其发布数据和 getvar1。我打算通过表单操作中的代码隐藏来调整它,但想避免使用 InnerHtml 来编写整个表单。 Holly 建议使用 javascript,但我还没有找到使用 javascript 获取 GET 变量的好方法。 ..... 为大众提供更多信息。

回答说明:我选择了@HollyStyles 提到的路线。 ajax 调用完成后,我使用 javascript 更改表单操作。但是,标记为正确的答案是通过代码隐藏执行此操作的正确方法。

最佳答案

您可以使用 Control Adapters的 asp.net。

这是一个工作示例:

public class RewriteFormHtmlTextWriter : HtmlTextWriter
{
public RewriteFormHtmlTextWriter(HtmlTextWriter writer)
: base(writer)
{
this.InnerWriter = writer.InnerWriter;
}
public RewriteFormHtmlTextWriter(System.IO.TextWriter writer)
: base(writer)
{
base.InnerWriter = writer;
}

public override void WriteAttribute(string name, string value, bool fEncode)
{
if (name == "action")
{
value = "Change here your value"
}

base.WriteAttribute(name, value, fEncode);
}
}

使用上面的代码,并在 App_Browsers 上声明一个名为 Form.browser 的文件

<browsers>
<browser refID="Default">
<controlAdapters>
<adapter controlType="System.Web.UI.HtmlControls.HtmlForm" adapterType="FormRewriterControlAdapter" />
</controlAdapters>
</browser>
</browsers>

您可以更改表格。当然,这段代码会在每个表单渲染中调用。

亲戚:http://weblogs.asp.net/scottgu/archive/2007/02/26/tip-trick-url-rewriting-with-asp-net.aspx

关于c# - 在 C# ASP.NET 3.5 中更改 HtmlForm 操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12567848/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com