为什么Razor仍然需要前缀'@';在c#source中的Html.DropDownListFor之前?
最近,我在一个ASP.NETMVC项目中编写了一个cshtml文件。下面的代码很奇怪,我不明白为什么Razor在@Html.DropDownListFor之前还需要前缀“@”为什么Razor仍然需要前缀'@';在c#source中的Html.DropDownListFor之前?,c#,asp.net,asp.net-mvc,razor,C#,Asp.net,Asp.net Mvc,Razor,最近,我在一个ASP.NETMVC项目中编写了一个cshtml文件。下面的代码很奇怪,我不明白为什么Razor在@Html.DropDownListFor之前还需要前缀“@” @using (Html.BeginForm("Register", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"})) { …… for (var i = 0; i < Model.TotalLevel;
@using (Html.BeginForm("Register", "Account", FormMethod.Post, new {@class = "form-horizontal", role = "form"}))
{
……
for (var i = 0; i < Model.TotalLevel; i++)
{
if (i != 0)
{
@Html.DropDownListFor(x => x.SelectedDepartmentIds[i], Enumerable.Empty<SelectListItem>(), "string", new {@class = "hidden department"})
;
}
else
{
@Html.DropDownListFor(x => x.SelectedDepartmentIds[i], Model.Departments, "string", new {@class = "department"})
;
}
}
}
@使用(Html.BeginForm(“Register”,“Account”,FormMethod.Post,new{@class=“form horizontal”,role=“form”}))
{
……
对于(var i=0;ix.selectedDepartmentId[i],Enumerable.Empty(),“string”,new{@class=“hidden department”})
;
}
其他的
{
@DropDownListFor(x=>x.selectedDepartmentId[i],Model.Departments,“string”,new{@class=“department”})
;
}
}
}
据了解,@Html.DropDownListFor(x=>x.selectedDepartmentId[i],Enumerable.Empty(),“string”,new{@class=“hidden department”})确实在c#source内部,因此无需在语句之前添加@
。但是,如果不是,视图不会显示drowdown列表。所以事实上,@
在Html之前是必需的,尽管它是在c#source中
谁能告诉我为什么?接受的答案是否有遗漏?Html.DropDownListFor()
只会执行该方法(它不会返回任何内容)。前导的@
表示方法的结果在view@StephenMuecke你能提供一些官方的网址来证实这一点吗?也许会有帮助。如果没有前导的@
,您需要将Html.DropDownListFor()
(aMvcHtmlString
)的返回值分配给一个变量,然后将结果输出到视图-{var ddl=Html.TextBoxFor(m=>m.ID);@ddl}
Html.DropDownListFor()
将只执行该方法(它不会返回任何内容)。前导的@
表示方法的结果在view@StephenMuecke您能提供一些官方url来验证这一点吗?也许会有帮助。如果没有前导的@
,您将需要分配Html.DropDownListFor()的返回值(aMvcHtmlString
)到变量,然后将结果输出到视图-{var ddl=Html.TextBoxFor(m=>m.ID);@ddl}