Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 为什么我不能访问在我的代码隐藏中客户端修改的字段?_Javascript_C#_Html - Fatal编程技术网

Javascript 为什么我不能访问在我的代码隐藏中客户端修改的字段?

Javascript 为什么我不能访问在我的代码隐藏中客户端修改的字段?,javascript,c#,html,Javascript,C#,Html,我正在尝试使用JavaScript进行获取。我没有问题,可以得到我需要的价值。我需要将此值传递给C#代码隐藏。我将该值放在一个隐藏字段中,一个div用于获取innerHTML和一个textbox.value。我不知道发生了什么,但我似乎无法从C#访问这些数据。我有一个asp:按钮,它执行客户端脚本,然后隐藏代码。只要客户端脚本返回true,页面就会刷新。我已经尝试返回false,正确的值仍保留在页面上,但它们在正在执行的代码中不可用(我发现这很奇怪,因为我从客户端返回了false)。我包括我的各

我正在尝试使用JavaScript进行获取。我没有问题,可以得到我需要的价值。我需要将此值传递给C#代码隐藏。我将该值放在一个隐藏字段中,一个div用于获取innerHTML和一个textbox.value。我不知道发生了什么,但我似乎无法从C#访问这些数据。我有一个asp:按钮,它执行客户端脚本,然后隐藏代码。只要客户端脚本返回true,页面就会刷新。我已经尝试返回false,正确的值仍保留在页面上,但它们在正在执行的代码中不可用(我发现这很奇怪,因为我从客户端返回了false)。我包括我的各种尝试,所以你可以看到所有

HTML:

代码隐藏(相关部分): 请注意,此时文本框和div都显示了我正在寻找的令牌

这就是我试图从DIV中提取的内容:

var sb = new StringBuilder();
testdiv.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
string s = sb.ToString().Remove(sb.ToString().Length - 6, 6);
s = s.Remove(0, 18);
s等于“这是一个测试”,这是页面加载时的状态,但不是页面上当前显示的状态

此时,在查看调试器时,secretTextBox.Text=“”,secretHiddenField.Value=“”

我已经尝试了好几天,并尝试了不同的方法来传递这个值。我似乎做不到。MVC不是一个真正的选项,除非我想重写整个应用程序。我觉得我错过了一些非常基本的东西,我想不出来。感谢您的帮助


看起来我可能需要从后面的代码中提取,但我在C#方面没有那么老练。如果这似乎是一个选择,我会接受的。

好吧,我让它工作了。我创建了一个运行JavaScript的HTML按钮。我阻止了默认行为,因此它不会回发帖子。然后,当按下服务器按钮时,字段就出现了。虽然很难看,但它很管用。如果我阻止了客户端单击的默认行为,我将无法获得所需的帖子。我仍然认为这可以通过一个按钮完成,但我无法让它以这种方式工作。

如果使用调试器查看javascript,您将看到该文档。getElementById(“secretTextBox”)找不到该元素。使用name属性来标识它们,因为ASP.NET服务器更改了您的ID。我对您将DIV呈现给StringBuilder的代码感到困惑。如果该值存储在隐藏字段中,请从隐藏字段中读取。如果它没有存储在隐藏字段(或其他HTML输入元素)中,则它对后面的代码不可用,因为它不是通过线路发送的。Dave,页面在文本框中呈现令牌。这向我表明文本框已被修改,但它不存在于代码隐藏中。John,我试图将DIV读入代码隐藏中。字符的剥离只是为了从字符串中去掉字符。它读取页面加载时div中的值,但不读取div中清晰显示的标记。我想我昨天很累。我还尝试了secretHiddenField.value=token;在代码隐藏的两个文档语句之后,secretHiddenField.value=“”;
// So this makes sure the page is valid and if so executes the fetch
function validateCheckBoxesMO() {
const result = validateMO();
if (result && document.getElementById("rbMOMap").checked) {
    fetch(
        "https://www.arcgis.com/sharing/generateToken?f=json&username=xxx&password=xxx&client=requestip"
    )
        .then((response) => response.json())
        .then((data) => {
            token = data.token;
            document.getElementById("secretTextBox").value = token;
            document.getElementById("testdiv").innerHTML = token;
        })
        // Garbage I know but I just wanted to force a false return but wait on the promise
        .then(finish => { return false });
} else {
    return result; // So this can return true but only if they are not getting the map.
    }
}
var sb = new StringBuilder();
testdiv.RenderControl(new HtmlTextWriter(new StringWriter(sb)));
string s = sb.ToString().Remove(sb.ToString().Length - 6, 6);
s = s.Remove(0, 18);