5

在代码后面的 html 控件中设置值而不进行服务器控制

 <input type="text" name="txt" />
    <!--Please note I don't want put 'runat="server"' here to get the control in code behind-->
    <asp:Button ID="Button1" runat="server" Text="Button" OnClick="Button1_Click" />

后面的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        //If I want to initlize some value in input, how can I set here
    }
}
protected void Button1_Click(object sender, EventArgs e)
{
    Request["txt"] // Here I am getting the value of input
}
4

5 回答 5

26

这个答案来自记忆,所以如果有点不对,我很抱歉。

您可以做的是使用 ASP.NET 内联表达式在页面加载期间设置值。

首先,在页面的代码隐藏中添加一个属性。

protected string InputValue { get; set; }

在这种情况Page_Load下,设置属性的值。

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
        this.InputValue = "something";
    }
}

最后,在页面标记中添加一个内联表达式,如下所示:

<input type="text" name="txt" value="<%= this.InputValue %>" />

这将允许您设置input元素的值,而无需使其成为服务器端标记。

于 2010-02-24T11:46:02.153 回答
11

未设置 runat="server" 的元素被视为纯文本并收集到尽可能少的 Literal 对象中(每个服务器端控件之间一个)。我想如果你真的想要,你可以尝试在 Page.Controls 中找到正确的 Literal(或者 LiteralControl)对象,并对其进行修改,但我绝对不建议这样做。

设置它 runat="server" 有什么可怕的?

是的,当然你也可以使用 <%= %>。嵌入式代码块。它们在渲染时进行评估,因此这样做应该是相对安全的。

于 2010-02-24T11:42:20.980 回答
3

在您的页面中添加一个表达式,如下所示:

<input class="field" id="locality" name="loc" value="<%= this.inputtypeCT %>"/> 

在页面的代码隐藏中添加一个属性:

protected string inputtypeCT;

在 Page_Load 事件中,设置属性的值:

protected void Page_Load(object sender, EventArgs e)
{
    if (!Page.IsPostBack)
    {
         this.inputtypeCT = "test"
    }
}
于 2016-02-26T12:33:41.693 回答
1
<input type="text" name="txt" value="<%= System.Web.HttpUtility.HtmlEncode(this.InputValue) %>" />
于 2014-11-05T08:17:33.780 回答
0

添加运行服务器

或使用如下所示的 Asp 控件

 <asp:TextBox type="text" runat="server" class="demoHeaders" id="datepicker" ClientIDMode="Static" Text=""/> 

还要确保您使用 ClientIDMode="Static" 将控件命名为像服务器一样在 clinet 中。

享受!

于 2018-02-21T10:38:26.020 回答