Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
为什么Razor仍然需要前缀'@';在c#source中的Html.DropDownListFor之前?_C#_Asp.net_Asp.net Mvc_Razor - Fatal编程技术网

为什么Razor仍然需要前缀'@';在c#source中的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;

最近,我在一个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; 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()
(a
MvcHtmlString
)的返回值分配给一个变量,然后将结果输出到视图-
{var ddl=Html.TextBoxFor(m=>m.ID);@ddl}
Html.DropDownListFor()
将只执行该方法(它不会返回任何内容)。前导的
@
表示方法的结果在view@StephenMuecke您能提供一些官方url来验证这一点吗?也许会有帮助。如果没有前导的
@
,您将需要分配
Html.DropDownListFor()的返回值
(a
MvcHtmlString
)到变量,然后将结果输出到视图-
{var ddl=Html.TextBoxFor(m=>m.ID);@ddl}