C# 页面加载时将javascript结果传递给服务器端所需的帮助
我有一个母版页,它加载我的Default.aspx 我需要使用获取浏览器版本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) 页面加载,根
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"];