我正试图抓住Razor,并且遇到了一个基本障碍。我根据用户身份验证状态生成一个小菜单。但是,我做错了。
<div>
<a href="/">Home</a>
<a href="/">List</a>
@if (Request.IsAuthenticated)
{
<a href="/">Upload</a>
<a href="/logout" onclick="return confirm('Are you sure you want to delete this image?');">Logout</a>
}
</div>
它不喜欢我的{}部分中的HTML。我认为它需要HTML标签......类似于<div>
,但因为我使用的是 
,所以它并不开心。我该怎么做?
此外,我正在尝试处理图像标记。但这是令人沮丧的失败。
@using GalleryPresentation.Models
@model IndexModel
@{
ViewBag.Title = "Craig and Melanie's Digital Moments";
}
<br/>
<div style="text-align: center">
<img src="@Html.Raw(m => m.RandomImageUrl) />
</div>
我的模型很简单:
{
public class IndexModel
{
public string RandomImageUrl { get; set; }
}
}
答案 0 :(得分:3)
Razor无法检测到您是否正在进入HTML模式。使用特殊的<text>
Razor标记表示您处于HTML模式。
答案 1 :(得分:1)
如果要显示HTML中的内容,可以使用@ Html.Raw()方法。所以您的代码迁移
<div>
<a href="/">Home</a>
<a href="/">List</a>
@if (Request.IsAuthenticated)
{ @Html.Raw("
<a href="/">Upload</a>
<a href="/logout" onclick="return confirm('Are you sure you want to delete this image?');">Logout</a> ")
}
</div>
答案 2 :(得分:0)
意味着不间断的空间。它在html中用于在中间插入空格。由于您处于剃刀代码的中间,编译器不知道何时使用html代码,没有指令。因为它会给出编译错误。这更像是c中的预处理程序指令。 (如果你知道#include)。在这里你只需要使用。正确的代码如下所示。
<div>
<a href="/">Home</a>
<a href="/">List</a>
@if (Request.IsAuthenticated)
{
<text>
</text>
<a href="/">Upload</a>
<text>
</text>
<a href="/logout" onclick="return confirm('Are you sure you want to delete this image?');">Logout</a>
}
</div>