gpt4 book ai didi

javascript - ASP.NET:在 JavaScript 代码中设置 C# 变量

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:40:04 25 4
gpt4 key购买 nike

我正在使用 ASP.NET C# 并且在我的 viewsAll.cshtml 中我有一个 JavaScript
检测用户是否使用 Internet Explorer。
alert("Other Browser");alert("Internet Explorer"); 工作正常。

问题是两个 c# 代码行都将被执行:
@{ Session["BrowserName"] = "IE";}@{Session["BrowserName"] = "other";}

但如果我使用的是 Internet Explore,它应该只执行
@{ Session["BrowserName"] = "IE";}

viewsAll.cshtml:

<script>
var usera = window.navigator.userAgent;
var ie = usera.indexOf("IE ");

if(ie > 0 || !!navigator.userAgent.match(/Trident.*rv\:11\./)) // If Internet Explorer
{
alert("Internet Explorer");
$('head').append('<link href="@Url.Content("~")Content/Styles/styleForIE.css" rel="stylesheet" />');
@{ Session["BrowserName"] = "IE";}
}
else{ // If Other Browser
alert("Other Browser");
$('head').append('<link href="@Url.Content("~")Content/Styles/styleForOther.css" rel="stylesheet" />');
@{Session["BrowserName"] = "other";}
}
</script>

最佳答案

你在这里混淆了服务器端代码和客户端代码的概念是错误的:
所有 C# 代码始终在服务器端执行,即使它位于客户端条件 block 内也是如此。
这意味着您的 @{ Session["BrowserName"] = "XX"; 代码块总是在服务器上执行,而不仅仅是合适的代码块,因为这两个 block 都只是“客户端条件”——在服务器上它们“只是文本”。

你应该/可以做的是在服务器端评估中转换条件并检查服务器上的用户代理:

<script>
@if(Request.UserAgent.Contains("IE ") || new Regex(@"Trident.*rv\:11\.").Match(Request.UserAgent).Success)
{
Session["BrowserName"] = "IE";
<text>
alert("Internet Explorer");
$('head').append('<link href="@Url.Content("~")Content/Styles/styleForIE.css" rel="stylesheet" />');
</text>
}
else
{
Session["BrowserName"] = "other";
<text>
alert("Other Browser");
$('head').append('<link href="@Url.Content("~")Content/Styles/styleForOther.css" rel="stylesheet" />');
</text>
}
</script>

关于javascript - ASP.NET:在 JavaScript 代码中设置 C# 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48658710/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com