gpt4 book ai didi

asp.net-mvc - 如何在脚本 block 中正确使用 Razor 语法?

转载 作者:行者123 更新时间:2023-12-02 09:15:49 24 4
gpt4 key购买 nike

我从事 ASP.NET MVC 5 项目。

我尝试在 cshtml 页面的脚本区域使用 razor 语法:

<script type="text/javascript">
var url = '@Url.Content("~/Account/Login/")';

@if (Request.IsAuthenticated)
{
url = '@Url.Content("~/Account/GetLayers/")';
}
</script>

但是当我运行页面时,我得到了这一行:

url = '@Url.Content("~/Account/GetLayers/")';

这个错误:

CS1012: Too many characters in character literal

所以我尝试了这个:

 url = "@Url.Content("~/Account/GetLayers/")";

但是现在我得到这个错误:

CS1002: ; expected

知道为什么我的上述尝试不起作用吗?

最佳答案

因为您已经在 C# 代码块中(由您的 if 条件语句打开)。如果你想在 Razor 中混合 js/纯文本和 C# 代码,使用 @:前缀

如果您尝试生成操作方法的相对 URL,您应该考虑使用 Url.Action方法。

<script type="text/javascript">
var url = '@Url.Action("Login","Account")';
@if (Request.IsAuthenticated)
{
@:url = '@Url.Action("GetLayers","Account")';
}
</script>

@:告诉 razor 以下表达式不应被视为代码,而是纯文本

这与使用 <text> 相同标签

@if (!Request.IsAuthenticated)
{
<text>url = '@Url.Action("Index")'</text>;
}

您可以使用三元运算符将其转换为单行

<script type="text/javascript">
var url = '@(Request.IsAuthenticated ? Url.Action("GetLayers","Account")
: Url.Action("Login","Account"))';
console.log(url);
</script>

关于asp.net-mvc - 如何在脚本 block 中正确使用 Razor 语法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47272478/

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