Javascript 获取从JS代码到C的返回值#

Javascript 获取从JS代码到C的返回值#,javascript,c#,asp.net,Javascript,C#,Asp.net,我想通过C#代码隐藏文件获得window.prompt()警报框的答案。它只是一行JavaScript代码,所以我想我甚至可以从代码隐藏文件中执行它。它是.aspx文件中的标记还是通过.aspx.cs文件执行,对我来说并不重要 我曾想过执行脚本(从C#部分调用),然后将返回值分配给某个不可见字段,但有没有更好的方法 显而易见的方式可能是这样的: .aspx file: <script> function foo() { document.getElementById('MyF

我想通过C#代码隐藏文件获得
window.prompt()
警报框的答案。它只是一行JavaScript代码,所以我想我甚至可以从代码隐藏文件中执行它。它是
.aspx
文件中的
标记还是通过
.aspx.cs
文件执行,对我来说并不重要

我曾想过执行脚本(从C#部分调用),然后将返回值分配给某个不可见字段,但有没有更好的方法

显而易见的方式可能是这样的:

.aspx file:
<script>
function foo() {
    document.getElementById('MyFieldID').value = window.prompt('Answer this question:', '');
}
</script>

.aspx.cs file:
////////////////////////////////////////////////
//MyFieldID.Text now contains whatever I want//
//////////////////////////////////////////////
.aspx文件:
函数foo(){
document.getElementById('MyFieldID')。value=window.prompt('回答这个问题:','');
}
.aspx.cs文件:
////////////////////////////////////////////////
//文本现在包含我想要的任何内容//
//////////////////////////////////////////////
你怎么说?有更好的方法吗?

更好的方法总是基于意见。我想说的是,你有几个选择,都取决于你在做什么。HTTP和ASP.NET为我们提供了几种向服务器发送数据的方法,在HTML5之前,主要有3种方法:

  • 查询字符串
  • 形式值
  • AJAX调用
  • 如果在用户回答提示后将其重定向到新页面,您可以将其发送到
    yournewurl.aspx?promptAnswer=*任意*

    如果您正在进行回发,那么可以使用表单值(这与您在示例中所做的类似)。您可以在页面上放置
    ,并在提交表单之前从JavaScript填充它

    如果只需要提示响应,但不尝试重新加载页面,则可以进行AJAX调用,将变量发送到服务器(这仍然使用#1或#2发送数据,只需执行此操作而不重新加载页面)


    这三个选项中哪一个最有效取决于您的实现。但是,您的解决方案应该可以正常工作。但是,由于可能用于将值填充到中的控件是
    HiddenField
    ,因此它将位于
    MyFieldID.value
    中,而不是
    MyFieldID.Text
    。唯一需要处理的另一件事是,如果您的
    MyFieldID
    嵌套在其他一些控件中(如
    ContentPlaceHolder
    ),那么ClientID会伪装成命名容器,因此从JavaScript访问时,它实际上类似于
    ContentPlanceHolder1\u MyFieldID

    谢谢你的回答,不过我不同意这是主观的。“有些事情是客观的,但性能(什么样的方式需要更少的内存或其他什么)是相当客观的。”齐姆同意。但这取决于你的需要。如果您希望向用户提供即时反馈,而不是重新加载页面,那么AJAX就是一种选择。如果您已经提交了一个表单进行回发,那么可以使用一个隐藏字段。如果您只是重定向,那么查询字符串就是最好的选择。我的观点是,这是主观的,因为这取决于具体情况。由于您没有提供这种情况,我尝试提供涵盖不同情况的示例。如果我的答案没有涵盖您的用例,请提供更多细节,并很高兴为我的答案添加更多内容。