我从事 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>
Run Code Online (Sandbox Code Playgroud)
但是当我运行页面时,我进入了这一行:
url = '@Url.Content("~/Account/GetLayers/")';
Run Code Online (Sandbox Code Playgroud)
这个错误:
CS1012:字符文字中的字符太多
所以我试过这个:
url = "@Url.Content("~/Account/GetLayers/")";
Run Code Online (Sandbox Code Playgroud)
但现在我收到这个错误:
CS1002:;预期的
知道为什么我上面的尝试不起作用吗?
因为您已经在 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>
Run Code Online (Sandbox Code Playgroud)
The@:告诉 razor 下面的表达式应该被认为不是代码,而是纯文本
与使用<text>标签相同
@if (!Request.IsAuthenticated)
{
<text>url = '@Url.Action("Index")'</text>;
}
Run Code Online (Sandbox Code Playgroud)
您可以使用三元运算符将其转换为单行
<script type="text/javascript">
var url = '@(Request.IsAuthenticated ? Url.Action("GetLayers","Account")
: Url.Action("Login","Account"))';
console.log(url);
</script>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1314 次 |
| 最近记录: |