gpt4 book ai didi

c# - 在 Javascript 中设置隐藏的输入值,然后在代码隐藏中访问它

转载 作者:太空狗 更新时间:2023-10-29 14:56:52 25 4
gpt4 key购买 nike

我一直在尝试使用 Javascript 设置隐藏输入的值,然后从我的 C# 代码隐藏中访问该值。当我运行下面复制的代码时,分配给 assignedIDs 的值为“”,我假设这是隐藏输入的默认值。如果我手动设置 html 标记中的值,则 assignedIDs 将设置为该值。

这种行为向我表明输入的值正在 onClientClick 和 onClick 事件触发之间被重置(重新呈现?)。

对于此事,我将不胜感激。我花了几个小时试图解决这个看似非常简单的问题。

html/javascript:

<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>Admin Page - Manage Tasks</title>
<script language="javascript" type="text/javascript">
function PopulateAssignedIDHiddenInput() {
var source = document.getElementById('assignedLinguistListBox');
var s = "";
var count = source.length;
for (var i = count - 1; i >= 0; i--) {
var item = source.options[i];
if (s == "") { s = source.options[i].value; }
else { s = s.concat(",",source.options[i].value); }
}
document.getElementById('assignedIDHiddenInput').Value = s;
// I have confirmed that, at this point, the value of
// the hidden input is set properly
}
</script>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:Panel id="EditMode" runat="server">
<table style="border: none;">
<tr>
<td>
<asp:Label ID="availableLinguistLabel" runat="server" Text="Available"></asp:Label><br />
<asp:ListBox ID="availableLinguistListBox" runat="server" Rows="10" SelectionMode="Multiple"></asp:ListBox>
</td>
<td>
<input type="button" name="right" value="&gt;&gt;"
onclick="Javascript:MoveItem('availableLinguistListBox', 'assignedLinguistListBox');" /><br /><br />
<input type="button" name="left" value="&lt;&lt;"
onclick="Javascript:MoveItem('assignedLinguistListBox', 'availableLinguistListBox');" />
</td>
<td>
<asp:Label ID="assignedLinguistLabel" runat="server" Text="Assigned To"></asp:Label><br />
<asp:ListBox ID="assignedLinguistListBox" runat="server" Rows="10" SelectionMode="Multiple"></asp:ListBox>
</td>
</tr>
</table>
//-snip-
<asp:Button ID="save_task_changes_button" runat="server" ToolTip="Click to save changes to task"
Text="Save Changes" OnClick="save_task_changes_button_click" OnClientClick="Javascript:PopulateAssignedIDHiddenInput()" />
</asp:Panel>

<!-- Hidden Inputs -->
<!-- Note that I have also tried setting runat="server" with no change -->
<input id="assignedIDHiddenInput" name="assignedIDHiddenInput" type="hidden" />
</div>
</form>
</body>

c#

protected void save_task_changes_button_click(object sender, EventArgs e)
{
string assignedIDs = Request.Form["assignedIDHiddenInput"];
// Here, assignedIDs == ""; also, Request.Params["assignedIDHiddenInput"] == ""
// -snip-
}

最佳答案

在 javascript 中,您需要将 value 属性设置为小写,如下所示:

document.getElementById('assignedIDHiddenInput').value = s;

然后就设置好了:) You can see an example in action here

虽然如果您提醒 .Value 它会显示您的值,您实际上已经添加了一个 .Value 属性,但是您尚未设置输入的 .value 属性,这是发布到服务器的内容。上面的示例链接说明了这两种方式。

此外,您还可以通过使用数组而不是字符串连接来使其更快一些,尤其是当您有很多选项时,如下所示:

var source = document.getElementById('assignedLinguistListBox');
var opts = [];
for (var i = 0; i < source.options.length; i++) {
opts.push(source.options[i].value);
}
var s = opts.join(',');

编辑:以上代码已更新,CMS是的,以前的方法是依赖于浏览器的,上面的方法现在应该表现一致。另外,如果 jQuery是一个选项,仍然有更短的方法来获取此信息,如下所示:

var s = $('#assignedLinguistListBox option').map(function() { 
return this.value;
}).get().join(',');
$('#assignedIDHiddenInput').val(s);

You can see a working example of this here

关于c# - 在 Javascript 中设置隐藏的输入值,然后在代码隐藏中访问它,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2687014/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com