HtmlHelpers Html.LabelFor/TextBoxFor/EditorFor 在 ASP.NET Core Razor 页面中无法识别

问题描述 投票:0回答:1

我有一个从 .NET Core 3.1 迁移的 .NET 5.0 MVC 项目,但使用

Html.LabelFor
Html.TextBoxFor
Html.EditorFor
的表单不显示输入。

查看:

@model UpdateProductsViewModel;

@{
    using (Html.BeginForm("UpdateProducts", "TheController", FormMethod.Post))
    {
        <p>Browse File:</p>
        Html.LabelFor(m => m.FullName, htmlAttributes: new { @class = "this-doesnt-show"});
        Html.TextBoxFor(m => m.FullName, htmlAttributes: new { @class = "this-neither");
        Html.EditorFor(m => m.FullName, htmlAttributes: new { @class = "this-neither");
        <div>
            <label asp-for="FullName" class="this-shows-with-asp-for"></label>
            <input asp-for="FullName" class="this-shows-with-asp-for" />
        </div>
        <input type='submit' value="Submit" />
    }
}

型号:

public class UpdateProductsViewModel{
  // truncated

  public string FullName { get; set; }
}

在上面的示例中,我有模型和视图。

但是之前我将其更改为

asp-for
,我将它们设置为
Html.LabelFor, Html.EditorFor, Html.TextboxFor
这些在 .NET 5 中再也没有出现过

当我使用语法

<input asp-for=""> | <label asp-for="">
时,控件显示,换句话说,1x 标签,1x 输入文本框,但 其他都没有(HtmlHelper 语法)

  • 即使 IntelliSense 检测到 VS Code 中的关键字,这些助手是否不再可用,或者我是否缺少 ViewModel 上的一些引用或某些属性?

请注意,我不经常将 .NET MVC 与 Razor 一起使用,所以也许有些事情发生了我不知道的变化。

c# asp.net-core razor razor-pages
1个回答
1
投票

您需要使用razor语法。像这样的东西

@model UpdateProductsViewModel;

@{
    using (Html.BeginForm("UpdateProducts", "TheController", FormMethod.Post))
    {
        <p>Browse File:</p>
         @Html.LabelFor(m => m.FullName, htmlAttributes: new { @class = "this-doesnt- 
         show"})
         @Html.TextBoxFor(m => m.FullName, htmlAttributes: new { @class = 
         "thisneither")
          @Html.EditorFor(m => m.FullName, htmlAttributes: new { @class = 
          "thisneither")
        <input type='submit' value="Submit" />
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.