需要对不同类型的 Razor HTML-input 语法进行一些说明

Need some clarification about different types of Razor HTML-input syntax

我正在 .NET Core 3.1 中开发一个项目,遇到了 HTML-输入类型的不同语法类型。 查看编译后的 html 源代码时,它们看起来完全相同。

有什么区别?更喜欢哪一个?

            //Alternative 1
            <div class="col-md-6 mb-3">
                @Html.LabelFor(x => x._user.UserProfileId, "Användarprofil*", htmlAttributes: new { @class = "form-label mb-0 fw-bold" })
                @Html.DropDownListFor(x => x._user.UserProfileId, new SelectList(profiles, "Id", "Name"), "Välj", htmlAttributes: new { @class = "form-select  form-select-lg", id = "Id", required = true})
                @Html.ValidationMessageFor(x => x._user.UserProfileId, "Error message", new { @class = "invalid-feedback" })
            </div>
            
            //Alternative 2
            <div class="col-md-6 mb-3">
                <label asp-for="_user.UserProfileId" class="form-label mb-0 fw-bold">Användarprofil*</label>
                <select asp-items="@(new SelectList(@profiles,"Id", "Name"))" asp-for="_user.UserProfileId" class="form-select  form-select-lg" aria-label="Användarprofil" required>
                    <option value="">Välj</option>
                </select>
                <div class="invalid-feedback">
                    Error message
                </div>
            </div>

HTML 助手(LabelForDropDownFor 等)是在 2008 年左右的 ASP.NET 的第一个版本中引入的。第二种方法使用 Tag helpers,它是 ASP.NET Core 中作为新功能引入的。 HTML 帮助程序保留在 ASP.NET Core 中,主要是为了能够更轻松地将现有完整框架应用程序中的视图迁移到 .NET Core。

建议所有新开发使用 Tag Helper。它们以“设计人员友好”的方式实现,因此 UI 专家团队成员可以更轻松地使用它们,而不是使用具有多个重载的 C# 方法(这实际上是 HTML 帮助器).