【问题标题】:ASP.NET: Set C# variable in JavaScript codeASP.NET:在 JavaScript 代码中设置 C# 变量
【发布时间】:2018-07-17 10:37:09
【问题描述】:

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

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

但如果我使用 Internet Explorer,它应该只执行
@{ 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>

【问题讨论】:

    标签: javascript c# asp.net web-applications


    【解决方案1】:

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

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

    <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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-05-10
      • 1970-01-01
      • 2014-06-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多