我在将值设置为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/

10-10 11:12