c# - .NET Core <select> 有默认值吗?

标签 c# asp.net-core razorengine asp.net-core-tag-helpers

我的目标是生成一个 <select>预先选择了某个选择值 ( <option> ) 的下拉列表,因此最终确定了 HTML应该是这样的:

<select>
  <option value = "1">Option1</option>
  <option value = "2" selected>Option2</option>
  <option value = "3">Option3</option>
</select>

请注意,值为 2 的选项有一个 selected属性,表示它将在单击下拉列表之前显示。我不能(并且正在尝试)使用 .NET Core Tag Helpers 实现这一目标。

这是我的模型(我想你可以安全地忽略细节):

public class ReportViewModel
{
  [Display(Name = "Pick a form")]
  public IEnumerable<Form> AvailableForms { get; set; }

  public Form SelectedForm { get; set; }

  public List<ReportData> FormResponses { get; set; }
}

请注意 Form那里的对象只有IdName它的属性。

这是我的选择语句:

<label asp-for="SelectedForm.Name" class="form-control-label font-weight-bold"></label>
<select asp-for="SelectedForm.Name"
        class="form-control"
        onchange ="onFormSelected(this.value)"
        asp-items="@(new SelectList(Model.AvailableForms, "Id", "Name"))">
</select>

我在 Microsoft Guide 中没有看到答案 或者在 blog on the topic

最佳答案

基本上,您需要将选择设置为使用 SelectedForm.Id 属性,然后指定要在 Controller 中选择的表单的值。我不得不稍微更新一下您的代码,但这对我有用 -

<label asp-for="SelectedForm" class="form-control-label font-weight-bold"></label>
<select asp-for="SelectedForm.Id"
        class="form-control"
        onchange ="onFormSelected(this.value)"
        asp-items="@(new SelectList(Model.AvailableForms, "Id", "Name"))">
</select>

然后在你的 Controller 中

var vm = new ReportViewModel()
{
    AvailableForms = new List<Form>()
};

var form2 = new Form() { Id = 2, Name = "Bar" };
(vm.AvailableForms as List<Form>).Add(new Form() { Id = 1, Name = "Foo" });
(vm.AvailableForms as List<Form>).Add(form2);
(vm.AvailableForms as List<Form>).Add(new Form() { Id = 3, Name = "Baz" });

vm.SelectedForm = form2;

return View(vm);

关于c# - .NET Core <select> 有默认值吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47797078/

相关文章:

asp.net-core - 带有 GetView 的 IrazorViewEngine.FindView 找不到 View

jquery - 使用jquery在文本框中动态添加值

c# - ASP.Net Core Sql session 持久化

asp.net-core - 使用 moment.js 将 UTC 时间戳发送到 ASP.NET Core Controller

c# - Entity Framework 核心 - DefaultValue(true) 属性不起作用

javascript - 如何在 html.actionlink 中仅调用 javascript 函数

c# - 正则表达式从js代码中提取地址

c# - 调用不带括号的函数?

c# - 在类库中嵌入二进制文件

c# - 将 DLL 从 C# 导入到 C++