Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/367.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
C# 页面加载时将javascript结果传递给服务器端所需的帮助_C#_Javascript_Asp.net - Fatal编程技术网

C# 页面加载时将javascript结果传递给服务器端所需的帮助

C# 页面加载时将javascript结果传递给服务器端所需的帮助,c#,javascript,asp.net,C#,Javascript,Asp.net,我有一个母版页,它加载我的Default.aspx 我需要使用获取浏览器版本 function loadHiddenField() { document.getElementById("HiddenField1").value = document.documentMode; } 此操作的结果需要传递到我的Default.aspx页面,以便我可以在用于填充页面的Linq查询中使用它。这一切都发生在我的站点首次加载时 所以: 1) 键入我的网站URL 2) 页面加载,根

我有一个母版页,它加载我的Default.aspx

我需要使用获取浏览器版本

function loadHiddenField() 
{       
    document.getElementById("HiddenField1").value =  document.documentMode;
}
此操作的结果需要传递到我的Default.aspx页面,以便我可以在用于填充页面的Linq查询中使用它。这一切都发生在我的站点首次加载时

所以:
1) 键入我的网站URL
2) 页面加载,根据您使用的浏览器版本,在default.aspx页面中显示正确的信息

我最初尝试使用客户端body onload调用该方法,但我意识到这行不通。。所以我需要知道什么是有效的

请不要告诉我使用HttpBrowserCapabilities,因为那样不行。。上面JavaScript中的内容正是我所需要的

我被困住了,真的需要帮助。。我以前问过这个问题,但唯一一个试图帮助他的人删除了他的帖子


<script>
bDocumentNeedsReload = <%= Session('documentmode') >= 0 : 'TRUE','FALSE' %>

if( document.documentMode ) {
  var xhr = new XMLHttpRequest();
  xhr.open("GET", "setsessiondocumentmode.aspx?mode=" + document.documentMode);
  xhr.send();

  if( bDocumentNeedsReload == TRUE ){
    window.location.reload();
  }
}
</script>
bDocumentNeedsReload==0:'TRUE','FALSE'> if(document.documentMode){ var xhr=new XMLHttpRequest(); xhr.open(“GET”、“setsessiondocumentmode.aspx”mode=“+document.documentMode”); xhr.send(); if(bDocumentNeedsReload==TRUE){ window.location.reload(); } }

我还没有测试过它,但是你可能会看到我要用它做什么。另外,比我聪明的人可能会给你一个兼容的解决方案。另外,我的C#有点过时。

您可以使用两个不同的页面来解决此问题。加载第一个页面,并在加载时重定向到default.aspx,在querystring中传递document.documentMode。这样,您就可以在代码中隐藏浏览器版本

function redirect()
{
    document.location = 'default.aspx?mode=' + document.documentMode; 
} 
调用页面标题中的重定向()


在页面中加载default.aspx代码,只需使用Request.QueryString[“mode”]

您可以通过Javascript在请求头中设置一个变量(请参阅)。以下是一个例子:

<script type="text/javascript">
    function onLoad() {
        var request = new XMLHttpRequest();
        request.open("POST", "/Home/About", true);
        request.setRequestHeader("documentMode", document.documentMode);
        alert(document.documentMode);
        request.send();
    }
</script>

使用基本的ASP.NET MVC 3网站,documentMode变量在我的About()控制器函数中设置为“7”。

您是否尝试过window.onload=function(){loadHiddenField();}?我把它放在哪里?这将如何将价值传递给服务器端?难道我不需要强制回发吗?我的直觉是,你很难得到答案的原因与你试图用非标准解决方案来做这件事有关。天知道我们都遇到过这种情况,但我很好奇你到底想做什么,而HttpBrowserCapabilities类不会为你做什么?因为在我的内联网上,所有pc都默认使用兼容模式。因此,如果我使用HttpBrowserCapabilities,它总是被报告为IE7。我发现准确获取浏览器版本的唯一方法是使用document.documentMode,但我不知道如何将结果传递给我的Linq查询。“setsessiondocumentmode.asp”将有一个功能:设置一个服务器端会话变量,您的Linq查询将能够读取该变量。一旦设置了会话变量,您就可以让默认页面写入bDocumentNeedsReload为false,然后继续您的方式。有道理吗?我想是的。。我会测试一下,然后再报告。干杯我在哪里声明bDocumentNeedsReload?如果有人能帮我找出bDocumentNeedsReload点,我将不胜感激。嗨,马特,看看上面的编辑,看看这是否更有意义。干杯你介意详细说明一下吗?我无法让uotonyh版本的这个工作..它将不得不等到早上-抱歉。
string documentMode = Request.Headers["documentModel"];