在 mvc 布局页面中初始化模型数据并将其绑定到下拉列表的正确方法是什么?

What is the right approach to initialize the Model's data inside of the mvc layout page and bind it to the dropdown list?

目前,我正在执行以下逻辑:

我有一个布局页面,我需要在其中显示 Kendo.DropDown 列表。

我创建了一个模型:

public class 文化模式 { public 字符串文化 { get;放; }

public List<string> AvailableCultures { get; set; }

public CultureModel()
{
    PopulateCulture();
}

private void PopulateCulture()
{
    CultureModel cm = new CultureModel();
    cm.AvailableCultures = new List<string>();
    cm.AvailableCultures.Add("en-US");
    cm.AvailableCultures.Add("de-DE");
    cm.AvailableCultures.Add("es-ES");
}

}

在我的布局中我定义了模型:@model CultureModel

然后,我尝试渲染 DisplayTemplate 以显示下拉菜单:

 @Html.DisplayFor(x => x.AvailableCultures, "_CultureSelector")

我的模板是:

@model List<string>

<label for="culture">Choose culture:</label>
@(Html.Kendo().DropDownList()
        .Name("culture")
)

这是正确的做法吗?

通过在布局文件中使用下拉菜单来考虑您的用例,直接在布局文件中使用以下代码创建 kendo 下拉菜单会很好:

@{
 @(Html.Kendo().DropDownList()
      .Name("Cultures")
      .DataTextField("Text")
      .DataValueField("Value")
      .BindTo(new List<SelectListItem>() {
          new SelectListItem() {
              Text = "en-US",
              Value = "1"
          },
          new SelectListItem() {
              Text = "de-DE",
              Value = "2"
          },
          new SelectListItem() {
              Text = "es-ES",
              Value = "3"
          }
      })
   )
}

也许使用局部视图来呈现布局中的代码,以便更好地组织代码和提高可读性: @Html.Partial("_CultureSelector")

我在 telerik 网站上找到了代码:https://demos.telerik.com/aspnet-mvc/dropdownlist