客户端数据到服务器端

时间:2017-09-01 20:55:28

标签: javascript c# asp.net

我尝试使用JavaScript弹出框(提示)在我的网站上获取一些用户输入,然后根据用户的操作在服务器端执行更多操作。

弹出框由于缺少单词而弹出。

以下是我尝试使用的代码:

<div>
    <asp:HiddenField ID="hidden" runat="server" />
</div>
<script>
    function userInput() {
        var reason = prompt("Enter reason for deleting:", "");
        //User pressed okay but didn't type anything
        while (reason == "") {
            //Keeps cycling until reason given or cancel is hit
            reason = prompt("Enter reason for deleting:", "");
        }
        if (reason != "" && reason != "Code:CancelDelete") {
            //User typed something and hit okay
            document.getElementById('hidden').innerHTML = reason.toString();
            $('#deleteReason').val(reason.toString());
            $("#hidden").val(reason.toString());
        }
        else {
            //User hits cancel
            document.getElementById('hidden').nodeValue = "Code:CancelDelete";
        }
    }
</script>

脚本中的while循环适用于我需要它做的事情。我可以告诉的问题是尝试设置HiddenField的值。我尝试了以下方法:

  • 的innerHTML
  • 的innerText
  • 的nodeValue

在研究这个问题时,我看到.value使用了很多,并且自己尝试了但是当我去输入 document.getElementById(&#39; hidden&#39;)时.value = .value 没有弹出选项或说明。

我测试了服务器端代码,所以我知道它有效。这一切都取决于获取用户输入。无论哪种方式,这里都是c#代码的摘录:

string deleteReason = hidden.Value;
//string deleteReason = test.InnerHtml.ToString();
if (deleteReason.Equals("Code:CancelDelete"))
{

}
else if (!deleteReason.Equals("Code:CancelDelete") && !deleteReason.Equals(""))
{

或多或少不知道这个。

更新1: 以下是在客户端浏览器(Firefox)上为隐藏字段生成的html代码:

<input name="ctl00$IndividualPageContent$hidden" 
id="IndividualPageContent_hidden" type="hidden">

2 个答案:

答案 0 :(得分:1)

当您在webform上键入元素ID时,asp.net会根据某些内容(您的表单,转发器等)为其提供唯一ID。

如果要将jQuery与此ID一起使用,可以使用ClientId prop。

这样的事情:

if (reason != "" && reason != "Code:CancelDelete") {
            //If your server id= "hidden"
            ele = $("#<%= hidden.ClientID %>");
            ele.html() = reason.toString();
            ...
        }

另一种选择是将静态ID添加到服务器元素,然后您的代码将按原样运行。 (html将以ID =隐藏呈现)

的ClientIDMode =&#34;静态&#34;

<div>
    <asp:HiddenField ID="hidden" runat="server" ClientIDMode="static"/>
</div>

答案 1 :(得分:0)

您正尝试设置ID为隐藏&#39;的元素的值,但这不是隐藏输入的ID。

正确的ID是&#39; IndividualPageContent_hidden&#39;。

设置如下的值:

document.getElementById('IndividualPageContent_hidden').value = 'Your value here';