C# 代码和带有“@:”的 HTML 之间的转换在特定 Contoso 大学教程中不被理解
本文关键字:Contoso 大学 教程 之间 代码 HTML 转换 | 更新日期: 2023-09-27 18:30:41
我一直在复习 asp.net Contoso 大学的教程,C# 代码和 HTML 标记(使用"@:")之间有两个特定的转换,我无法理解:
1)
@:<td>
我读到,当 ASP.NET 看到开始的HTML标签时,它会自动将代码视为HTML标记。如果是这样,为什么在这里使用"@:"?
2)
@course.CourseID @: @course.Title
为什么"@:"在代码行的中间而不是在开头?
完整视图代码如下。提前感谢任何试图提供帮助的人。
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<table>
<tr>
@{
int cnt = 0;
List<ContosoUniversity.ViewModels.AssignedCourseData> courses = ViewBag.Courses;
foreach (var course in courses)
{
if (cnt++ % 3 == 0)
{
@:</tr><tr>
}
@:<td>
<input type="checkbox"
name="selectedCourses"
value="@course.CourseID"
@(Html.Raw(course.Assigned ? "checked='"checked'"" : "")) />
@course.CourseID @: @course.Title
@:</td>
}
@:</tr>
}
</table>
</div>
简而言之,它是用来告诉将这个文本呈现为纯html的,不要认为它是C#代码。
在您的特定情况下,它用于在 CourseId 和课程标题之间添加空格:
@course.CourseID @: @course.Title
@course.CourseID
是 C# 代码,当 @:出现时,它现在是纯文本,然后当 @course.Title
来时,它被认为是 C# 代码,所以 @: 是指定它是纯 HTML 而不是 C# 代码。
1)你对HTML标签的行为是正确的。他们可以使用<td>
而不是@:<td>
.
2)你也是对的,关于@course.CourseID @: @course.Title
.我也不清楚他们为什么选择使用这种模式。如果他们使用@course.CourseID @course.Title
,它将同样工作.
您可以自己尝试,看看您得到相同的结果和输出。
我只是建议你不要把他们的示例工作作为使用 ASP.NET Razor的绝对单一方式。