使用 C# 设置 HTML 输入文本框的显示文本

Posted

技术标签:

【中文标题】使用 C# 设置 HTML 输入文本框的显示文本【英文标题】:Set HTML input textbox's display text using C# 【发布时间】:2012-02-27 05:20:29 【问题描述】:

我的 ASPX 页面中有一个 html 输入框,如下所示

<input id="txtID" runat="Server" type="text" />

现在我有一些用 C# codebehind 编写的代码,它计算一个值,我希望该值显示在上面的 TextBox 中。

我已经试过了

txtID.Value = Number.ToString();

HtmlGenericControl ct = new HtmlGenericControl();
ct.InnerHTML = Number.ToString();
txtID.Controls.Add(ct);

但以上两个似乎都没有设置文本框的显示文本。

谁能帮我弄清楚如何完成它。 我无法使用

<asp:TextBox />

编辑(正确答案): 我最初尝试做的方式是正确的,即

txtID.Value = Number.ToString();

罪魁祸首是占位符插件,它被调用并从文本框中删除值。希望这能帮助很多像我这样被困在如此愚蠢的地方的人。

【问题讨论】:

尝试将 type="text" 添加到您的输入中 你的代码是怎么调用的?为什么不能使用&lt;asp:TextBox /&gt; @Hadas 抱歉,我没有提到,但它已经包含在其中了。 看到这个4guysfromrolla.com/articles/021611-1.aspx @AndersAbel 我们有一个创建表单的设计师团队和一些正在填充表单的后端人员,根据严格的指示,我们无法做到这一点。 【参考方案1】:

您可以通过在 PageLoad 或 PageInit 上注入 javascript 来更改控件的值。只需说GetValueDummy() 方法是您计算值的方法,并且您正在使用 jQuery。

您需要在 Page.Load 处理程序中将 javascript 注入页面。

protected void Page_Load(object sender, EventArgs e)

    var script = "$('#txt').val('" + GetValueDummy() + "');";
    ClientScript.RegisterStartupScript(typeof(string), "textvaluesetter", script, true);

在此代码中,txt 是您输入的 id。

如果您不使用 jQuery,只需将脚本变量的值替换为

var script = "document.getElementById('txt').value = '" + GetValueDummy() + "';";

在某个时间点之后,您的页面将完全呈现并准备好发送给客户端。所以你不能直接从c#修改它。您可以在此处阅读有关页面生命周期的更多信息:http://msdn.microsoft.com/en-us/library/ms178472.aspx

【讨论】:

这是实现我想要实现的目标的绝佳方式。刚刚弄清楚我的问题是什么:这是一个占位符插件,它正在清除文本框中的值。【参考方案2】:

这样写:

<input type="text" name="email" id="MyInput" runat="server" />

像这样访问它:

string  MyInput= myTextBox.Value;

对不起上面的回答:

这里是编辑:

this.Init += Page_Init;
this.Load += Page_Load;
protected void Page_Init(object sender, System.EventArgs e)

        createControls();
    

    protected void Page_Load(object sender, System.EventArgs e)
    
        if (IsPostBack)
        
            setcontrolvalues();
        
    

    private void createControls()
    
        TextBox txt1 = new TextBox();
        TextBox txt2 = new TextBox();
        txt1.ID = "txt1";
        txt1.EnableViewState = true;
        txt2.EnableViewState = true;
        txt2.ID = "txt2";
        PlaceHolder1.Controls.Add(txt1);
        PlaceHolder1.Controls.Add(txt2);
    

    private void setcontrolvalues()
    
        TextBox txt1 = null;
        TextBox txt2 = null;
        txt1 = (TextBox)(PlaceHolder1.FindControl("txt1"));
        txt1.Text = "text1";
        txt2 = (TextBox)(PlaceHolder1.FindControl("txt2"));
        txt2.Text = "text2";

【讨论】:

这会设置输入控件的值属性,但不会改变显示文本。尝试过这种方式。 无论如何@DonNetter 我在寻找解决方案时遇到了这段代码,然后在这里提问,尝试实施但无济于事。感谢您付出的努力,在这里非常感谢您的帮助。如果你还有什么要我尝试的,请告诉我。我很高兴能得到一个很好的解决方案。 我已经为你转换了,但我不是 C# 人,如果有任何错误,请见谅。 @Piyush-感谢您的评论,如果我遇到这个解决方案,我会放在这里,这可能会对您有所帮助。【参考方案3】:

这样做:

<input type="text" ID="txtID" runat="server" />

msdn 声称以下将起作用:

<input 
    Type="Password|Text"
    EnableViewState="False|True"
    Id="string"
    Visible="False|True"
    OnDataBinding="OnDataBinding event handler"
    OnDisposed="OnDisposed event handler"
    OnInit="OnInit event handler"
    OnLoad="OnLoad event handler"
    OnPreRender="OnPreRender event handler"
    OnServerChange="OnServerChange event handler"
    OnUnload="OnUnload event handler"
    runat="server"
    />

如果它“没有帮助”,问题可能不在于标记!

【讨论】:

我并不是说明确给出类型是一个坏主意,但我不确定这会有所帮助。在没有类型的情况下,text 是默认值,所以这没有什么区别。 @MrLister 完全正确。这没有帮助。

以上是关于使用 C# 设置 HTML 输入文本框的显示文本的主要内容,如果未能解决你的问题,请参考以下文章

JAVA 文本框单击清空

C#中如何检查文本框的输入信息是不是为数字?

MFC中在指定的文档搜索 输入框中的指定内容并显示到指定的文本框中的按钮代码该怎么写啊?在线等

C# winform 文本框里,怎么设置数字的格式?

如何使用 C# 设置列表框的高度以匹配其中的元素数量?

javaswing文本框不能输入中文