如果我有一个标准的 HTML 文本框:我可以使用 Request.Form 检索值。
但是我该如何从服务器端填充这个文本框呢?我试过
Request.Form["txtTest"] = "blah";
但有一个只读错误。
如果您希望在服务器端通过其 id 访问控件(根据 .net 控件)获得一流的支持,则需要使其具有 runat="server" 标记。
否则,您可以通过在代码中使用属性并使用数据绑定从 aspx 页面上的 this 中提取值来动态设置值,例如
<input type=text value="<%=PropertyInCodeBehindClass %>" />
和
public string PropertyInCodeBehindClass
{
get;
set;
}
请记住,在您的服务器代码运行时,客户端文本框不存在。托管控件的 html 页面已作为新请求提交给服务器,并且 Web 浏览器希望您以全新的页面进行响应。在该响应到达之前,浏览器将显示页面,但这只是一个方便的外壳。保存你的文本框的 DOM 已经消失了,你还没有创建一个新的。您不能通过更新请求中的属性来直接更改您的响应。
这意味着您需要使用控件的服务器端表示。如果它是服务器控件,您可以尝试txtTest.Text = "blah";
否则,您需要找到生成该输入标记的位置并适当地更改内容。
总是有两个;不多不少。一个请求和一个响应。