在代码后面的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
}
答案 0 :(得分: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
元素的值,而不会将其设置为服务器端标记。
答案 1 :(得分:11)
未设置runat =“server”的元素被视为纯文本,并被收集到尽可能少的Literal对象中(每个服务器端控件之间一个)。我想如果你真的想要,你可以尝试在Page.Controls中找到正确的Literal(或者LiteralControl)对象,并对其进行修改,但我肯定会反对它。
设置runat =“server”有什么可怕的?
是的,当然你也可以使用&lt;%=%&gt;。 Embedded code blocks。它们在渲染时进行评估,因此这样做应该相对安全。
答案 2 :(得分: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"
}
}
答案 3 :(得分:1)
<input type="text" name="txt" value="<%= System.Web.HttpUtility.HtmlEncode(this.InputValue) %>" />