Задание значения в элементе управления html в коде позади без контроля сервера - PullRequest
5 голосов
/ 24 февраля 2010

Установка значения в элементе управления 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
}

Ответы [ 5 ]

26 голосов
/ 24 февраля 2010

Этот ответ приходит из памяти, поэтому я прошу прощения, если он немного не в порядке.

Что вы можете сделать, это использовать встроенное выражение 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, не делая его тегом на стороне сервера.

11 голосов
/ 24 февраля 2010

Элементы, для которых не установлено runat = "server", рассматриваются как простой текст и объединяются в как можно меньшее число объектов Literal (по одному между каждым серверным элементом управления). Полагаю, если вы действительно этого хотите, вы можете попытаться найти правильный объект Literal (или, может быть, LiteralControl) в Page.Controls и изменить его, но я определенно рекомендую против этого.

Что такого ужасного в настройке runat = "server"?

И да, конечно, вы также можете использовать <% =%>. Встроенные кодовые блоки . Они оцениваются во время рендера, поэтому это должно быть относительно безопасно.

3 голосов
/ 26 февраля 2016

Добавьте выражение на своей странице, как это:

<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"
    }
}
1 голос
/ 05 ноября 2014
<input type="text" name="txt" value="<%= System.Web.HttpUtility.HtmlEncode(this.InputValue) %>" />
0 голосов
/ 21 февраля 2018

Добавить сервер runat

или используйте элементы управления Asp, как показано ниже

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

Также убедитесь, что вы использовали ClientIDMode = "Static" для именования элемента управления, который будет находиться в клинике как сервер.

Наслаждайтесь!

...