首页 > 解决方案 > 如何在剃刀视图中使用 Javascript 拆分('@')脚本?

问题描述

@{
ViewBag.Title = "Index";
Layout = null;
}
</head>
<body>
<!DOCTYPE html>
<html lang="en">
<head>
<div id="login-page">
    <div class="container">

        <div class="form-login">
            <h2 class="form-login-heading">sign in now</h2>
            <div class="login-wrap">
                <input type="text" id="txtUsername" class="form-control" 
placeholder="User ID" autofocus>
                <br />
                <input type="password" id="txtPassword" class="form-control" 
placeholder="Password">
                <label class="checkbox">
                    <span class="pull-right">
                        <a data-toggle="modal" href="login.html#myModal"> 
Forgot Password?</a>

                    </span>
                </label>
                <button class="btn btn-theme btn-block" id="btnLogin"><i 
class="fa fa-lock"></i> SIGN IN</button>
                <hr>


                <div class="registration">
                    Don't have an account yet?<br />
                    <a class="" href="#">
                        Create an account
                    </a>
                </div>

            </div>
        <div id="divError" class="alert alert-danger collapse">
            <a id="linkClose" href="#">&times;</a>
            <div id="divErrorText">

            </div>
        </div>
    </div>
</div>
<script>
$('#btnLogin').click(function () {
                $.ajax({
                    url: '/token',
                    method: 'POST',
                    contentType: "application/json",
                    data: {
                        username: $('#txtUsername').val(),
                        password: $('#txtPassword').val(),
                        grant_type: "password"
                    },
                    success: function (response) {
                        localStorage.setItem('accessTokenP', 
response.access_token);
                        //example@yahoo.com

                        var x = response.userName.toString().split('@'); 
                        localStorage.setItem('NameP', x[0]);

                        $('#divErrorText').text(JSON.stringify(response));
                        $('#divError').show('fade');
                        var url = "/Home/index";
                       window.location.href = url;
                    },
                    error(response) {
                        alert("error")
                        $('#divErrorText').text(JSON.stringify(response));
                        $('#divError').show('fade');

                    }
</script>

</body>

</html>

源错误:

第 128 行:成功:函数(响应){ 第 129 行:localStorage.setItem('accessTokenP', response.access_token); 第 130 行: var x = response.userName.toString().split('@'); 第 131 行:localStorage.setItem('NameP', x[0]); 第 132 行:

源文件:/Views/Home/Login.cshtml 行:130

标签: javascriptjqueryrazor

解决方案


由于 @ 是 Razor 中的保留字符,因此要在字符串中获取实际的 @ 字符,您需要通过加倍来转义 @ 字符。所以

   var x = response.userName.toString().split('@'); 

变成

 var x = response.userName.toString().split('@@'); 

通过以这种方式转义它,Razor 了解您使用的 @ 不是作为 Razor 符号而是作为文字,并且单个 @ 将放置在字符串中,这是您在这种情况下所需要的。


推荐阅读