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>