使用" @:"在C#代码和HTML之间进行转换在具体的Contoso大学教程

时间:2016-01-17 19:39:21

标签: c# html asp.net asp.net-mvc asp.net-mvc-4

我一直在浏览asp.net Contoso University tutorial,并且C#代码和HTML标记之间有两个特定的转换(使用" @:"),这些转换不被理解为我:

1)

@:<td>

我已经读过,当ASP.NET看到开始的HTML标记时,它会自动将代码视为HTML标记。如果是这样,为什么&#34; @:&#34;用在这里?

2)

  

@course.CourseID @: @course.Title

为什么&#34; @:&#34;在代码行的中间而不是在开始?

完整视图代码如下。 提前感谢任何试图提供帮助的人。

<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>

2 个答案:

答案 0 :(得分:1)

简而言之,它用于告诉将此文本渲染为纯HTML,不要将其视为c#代码。

在您的特定情况下,它用于在此处的ViewId和课程标题之间添加空格:

@course.CourseID @:  @course.Title

@course.CourseID是c#代码,当 @:来时它现在是纯文本,然后当@course.Title出现时它被认为是c#代码,所以 @: 是指定它是普通的html而不是c#代码。

答案 1 :(得分:0)

1)您对HTML标记行为是正确的。他们可以使用<td>代替@:<td>

2)你也是@course.CourseID @: @course.Title。我也不清楚为什么他们选择使用这种模式。如果他们使用@course.CourseID @course.Title,它的工作原理会相同。

你可以尝试自己,看到你得到相同的结果和输出。

我只是建议你不要将他们的示例作为使用ASP.NET Razor的绝对单一方式。