我在将值设置为ASP.NET 4.5中的HiddenField时遇到一些问题。
从我所看到的,我已经尝试了以下方法而没有任何运气:
在ASPX中:
<asp:HiddenField ID="HiddenField" runat="server" value="" />
<script type="text/javascript">
function SetHiddenField() {
var vv = "HELLO WORLD";
document.getElementById('<%=HiddenField.ClientID%>').value = vv;
}
</script>
在后面的代码中:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true);
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + HiddenField.ClientID + "');", true);
这会警告ClientID中的垃圾。
我尝试过的其他解决方案如下。
在.ASPX中:
<asp:HiddenField ID="HiddenField" runat="server" value="" />
<script type="text/javascript">
function SetHiddenField() {
var vv = "HELLO WORLD";
document.getElementById('HiddenField').value = vv;
}
</script>
此处的一个问题是Intellit中不存在
.value
,仅存在.ValueOf
。在后面的代码中:
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true);
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert('" + HiddenField.Value + "');", true);
由于未显示任何警报,因此没有任何 react ,可能是JavaScript中的错误。
有人能指出我正确的方向吗?
最佳答案
您的第一个标记是好的:
<asp:HiddenField ID="HiddenField" runat="server" value="" />
<script type="text/javascript">
function SetHiddenField() {
var vv = "HELLO WORLD";
document.getElementById('<%=HiddenField.ClientID%>').value = vv;
}
</script>
将代码更改为此(检查第二行):
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true);
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "alert", "alert(document.getElementById('" + HiddenField.ClientID + "').value);", true);
输出应该是这样的:
编辑:在您的方案中,您可以运行javascript以获取值并强制回发以在代码中使用该值。我将标记更改为:
<script type="text/javascript">
function SetHiddenField() {
var vv = "HELLO WORLD";
document.getElementById('<%=HiddenField.ClientID%>').value = vv;
__doPostBack('<%=HiddenField.ClientID%>', '')
}
</script>
在代码中,我的Page_Load如下所示:
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
// Register JavaScript which will collect the value and assign to HiddenField and trigger a postback
ScriptManager.RegisterStartupScript(this.Page, this.GetType(), "SetHiddenField", "SetHiddenField();", true);
}
else
{
//Also, I would add other checking to make sure that this is posted back by our script
string ControlID = string.Empty;
if (!String.IsNullOrEmpty(Request.Form["__EVENTTARGET"]))
{
ControlID = Request.Form["__EVENTTARGET"];
}
if (ControlID == HiddenField.ClientID)
{
//On postback do our operation
string myVal = HiddenField.Value;
//etc...
}
}
}
关于c# - 在ASP.NET 4.5中将值设置为“隐藏字段”,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/24250758/