Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/265.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# 如何从Razor切换到普通的旧HTML?_C#_Javascript_Razor - Fatal编程技术网

C# 如何从Razor切换到普通的旧HTML?

C# 如何从Razor切换到普通的旧HTML?,c#,javascript,razor,C#,Javascript,Razor,可能重复: 下面是我试图运行的代码: // Razor code! @if (User.Identity.IsAuthenticated) { // This is Javascript, NOT C#/Razor code. Hence the '@' symbol. var currentUser = @User.Identity.Name; } else { // Also Javascript code!

可能重复:

下面是我试图运行的代码:

    // Razor code!
    @if (User.Identity.IsAuthenticated) {

        // This is Javascript, NOT C#/Razor code. Hence the '@' symbol.
        var currentUser = @User.Identity.Name;

    } else {

        // Also Javascript code!
        var currentUser = null;
    }
基本上,如果用户登录,我想将其输出为Javascript:

var currentUser = @User.Identity.Name;
如果用户已注销,则执行以下操作:

var currentUser = null;

一旦在Razor中启动标记,它就会切换到标记(包括
)。如果您不需要任何标签,请使用

如果您需要快速复制/粘贴解决方案,请使用Tim或Adam的解决方案。然而,由于Razor在解析多种语言的混合时使用了相当复杂的算法,因此值得提供完整的(CC-by许可证允许的):

代码块:

@{ 
  int x = 123; 
  string y = "because.";
}
表达式(Html编码):

电邮地址:

Hi philha@example.com
显式表达式:

<span>ISBN@(isbnNumber)</span>
调用泛型方法:

@(MyClass.MyMethod<AType>())

我省略了Razor委托,因为现在有了。

首先,您需要将其更改为类似的内容(请记住您在
@User.Identity.Name
中的引号):


var currentUser=null;
@if(User.Identity.IsAuthenticated){
currentUser='@User.Identity.Name';
}
然后添加一些javascript:

<script type="text/javascript">
if (currentUser != null) {
    document.getElementById('loggedInUser').innerHTML = 'Welcome '+ currentUser;
}
</script>

如果(currentUser!=null){
document.getElementById('loggedInUser')。innerHTML='Welcome'+currentUser;
}
@Adam Plocher的答案展示了一种更简洁的表示方法(从服务器脚本中删除JavaScript变量声明)

一种更简洁的方式,用一行更容易理解的文字来表示:

<script>
    var currentUser = '@(User.Identity.IsAuthenticated ? User.Identity.Name : "Anonymous" )';
    alert(currentUser);
</script>

var currentUser='@(User.Identity.IsAuthenticated?User.Identity.Name:“匿名”);
警报(当前用户);

检查此选项以何种方式回答OP?OP要求在上下文之间切换。我认为我的答案是合适的。在那一页中,没有提及切换上下文。你应该弄清楚OP需要的是切换上下文,OP到底需要什么。我不怀疑这一点。我只是说,对于问这个问题的人,或者对OP有同样怀疑的人来说,这样的链接可能没有多大帮助。如果答案是“参见本页示例4-6”,则会更有帮助。我还想引用一个例子,以防将来的读者无法访问该页面。它可能需要绕过它…所有答案都被否决了。我想知道这个有什么问题。我的第一个版本本可以更好。我相信目前的两个样本都回答了这个问题,并且都经过了测试。
Hi philha@example.com
<span>ISBN@(isbnNumber)</span>
<span>In Razor, you use the 
@@foo to display the value 
of foo</span>
@*
This is a server side 
multiline comment 
*@
@(MyClass.MyMethod<AType>())
Hello @title. @name.
<script type="text/javascript">
var currentUser = null;
@if (User.Identity.IsAuthenticated) {
    <text>
        currentUser = '@User.Identity.Name';
    </text>
}
</script>
<script type="text/javascript">
if (currentUser != null) {
    document.getElementById('loggedInUser').innerHTML = 'Welcome '+ currentUser;
}
</script>
<script>

    @if( User.Identity.IsAuthenticated ) {
        <text>var currentUser = "@User.Identity.Name";</text>
    }
    else {
         <text>var currentUser = null;</text>
    }

    alert(currentUser);

</script>
var currentUser = "Foo Bar";
alert(currentUser);
<script>
    var currentUser = '@(User.Identity.IsAuthenticated ? User.Identity.Name : "Anonymous" )';
    alert(currentUser);
</script>