gpt4 book ai didi

c# - 不加载回传表单值?

转载 作者:行者123 更新时间:2023-11-30 22:39:42 25 4
gpt4 key购买 nike

我使用 Firebug 进行验证,我的回调成功触发。在“发布”部分,它显示我的文本框(而不是为我的文本框呈现的 HTML)正在成功提交其表单值(无论在文本框中输入什么)。但是,在服务器端,该值并未恢复到新创建的 TextBox 中——即使我重新创建的所有内容都具有与最初相同的 ID。此外,我检查了 Page.Request.Form 集合(请参阅:getControlAsHtml()),但我尝试的所有操作均未返回我的值。这是代码,感谢您的帮助。

总结

我的目标是执行回调(目前有效)并从回发的表单值中恢复我的 TextBox 的值(无效)。为简洁起见,省略了一些(工作)代码。

public class CreateForm : WebPart, ICallbackEventHandler
{
public string callbackData = "";
public DropDownList list = new DropDownList();
public Panel p = new Panel();

public virtual string GetCallbackResult()
{
return callbackData;
}

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

//The DropDownList is created here in my real code, but was omitted
//because it is working as expected.
//At the moment, all the DDL does is cause a callback to occur.

p.ID = "theForm";

if (!Page.IsPostBack)
{
MyForm MyForm = new MyForm();
MyForm.ID = "currentForm";
p.Controls.Add(MyForm);
}

Controls.Add(p);
}

/*
* The eventArgument field is parsed to get the desired command.
* Valid commands:
* 1) send - Indicates the user has clicked the 'send' button.
* 2) display - Indicates the user wants to change the form
* currently displayed.
* A drop down box is used to let the user choose the form.
*/
public virtual void RaiseCallbackEvent(string eventArgument)
{
if (eventArgument.StartsWith("display"))
{
//always index 0 for testing.
callbackData = CreateFormByType(0);
}
}

public string CreateFormByType(int index)
{
MyForm test = null;

switch (index)
{
case 0:
test = new MyForm();
break;
}

if (test != null)
{
test.ID = "currentForm";
p.Controls.Add(test);
}

return test != null ? test.getControlAsHtml() : null;
}

}

public class MyForm : Control
{
public Label label = new Label();
public TextBox textboxForLabel = new TextBox();

protected override void OnInit(EventArgs e)
{
base.OnInit(e);

textboxForLabel.ID = "textboxForLabel";
label.AssociatedControlID = "textboxForLabel";
label.Text = "textboxForLabel: ";

this.Controls.Add(label);
this.Controls.Add(textboxForLabel);
}

public virtual string getControlAsHtml()
{
//How come all 3 of these don't return the expected value?
string s = Page.Request.Form[textboxForLabel.ID];
string t = Page.Request.Form[textboxForLabel.ClientID];
textboxForLabel.Text = (string)Page.Request.Form["textboxForLabel"];

StringBuilder sb = new StringBuilder();
using (StringWriter sw = new StringWriter(sb))
{
using (HtmlTextWriter textWriter = new HtmlTextWriter(sw))
{
this.RenderControl(textWriter);
}
}
return sb.ToString();
}
}

最佳答案

string s = Page.Request.Form[textboxForLabel.UniqueID];

关于c# - 不加载回传表单值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5585063/

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