繁体   English   中英

如何在asp.net内核中设置运行时绑定的select输入的选定选项?

[英]How to set selected option of select input that is bound at run time in asp.net core?

我正在用 ASP.net 核心编写代码。 我有一个视图,用于编辑 model 并在其上插入。 我们有一个表格,最上面的行是 model 的记录,可以编辑,最后一行是用于在 model 中插入新记录的表格。下面显示了示例代码以进行更多解释。

家庭控制器.cs:

public IActionResult Insert()
{            
    ViewBag.ParentList= new SelectList(ShowParent(), "Id", "ParentCode");

    MyViewModel viewModel = new MyViewModel ()
    {
        MyList = ShowAllItem(),
    };

    return View(viewModel);
}
[HttpPost]
public IActionResult Insert(MyViewModel myViewModel)
{
...some code...
}
[HttpPost]
public IActionResult Edit(MyViewModel myViewModel)
{
...some code...
}

我的视图模型.cs

public class MyViewModel
{
  public int Id { get; set; }

  public string Code { get; set; }
   
  public string Name { get; set; }
  
  public int ParentId { get; set; }

  public List<MyModel> MyList { get; set; }

}

插入.cshtml:

@model MyViewModel

<table>
  <thead>
     <tr>
       <th>Id</th>
       <th>Code</th>
       <th>Name</th>
       <th>Parent</th>
       <th>operation</th>
     </tr>
  </thead>
  <tbody>
  @foreach(var item in Model.MyList)
  {
   <form method="post">
     <tr>
       <td>
         <div class="form-group">
           <input asp-for="Id" disabled class="form-control" value="@item.Id" />
         </div>
       </td>
       <td>
         <div class="form-group">
           <input asp-for="Code" class="form-control" value="@item.Code" />
         </div>
       </td>
       <td>
         <div class="form-group">
           <input asp-for="Name" class="form-control" value="@item.Name" />
         </div>
       </td>
       <td>
         <div class="form-group">
           <select asp-for="ParentId" class="form-control" asp-items="@ViewBag.ParentList">
              <option value="0" disabled selected>Select...</option> 
           </select>
         </div>
         // ...PROBLEM IS IN THIS CELL...
       </td>
       <td>
         <div class="form-group">
           <button type="submit" asp-action="Edit" class="form-control">Edit</button>
         </div>
       </td>
     </tr>
   </form>
  }
   <form method="post">
     <tr>
       <td>
         <div class="form-group">
           <input asp-for="Id" disabled class="form-control"/>
         </div>
       </td>
       <td>
         <div class="form-group">
           <input asp-for="Code" class="form-control" />
         </div>
       </td>
       <td>
         <div class="form-group">
           <input asp-for="Name" class="form-control" />
         </div>
       </td>
       <td>
         <div class="form-group">
           <select asp-for="ParentId" class="form-control" asp-items="@ViewBag.ParentList">
              <option value="0" disabled selected>Select an item...</option>
           </select>
         </div>
       </td>
       <td>
         <div class="form-group">
           <button type="submit" asp-action="Insert" class="form-control">Insert</button>
         </div>
       </td>
     </tr>
   </form>
  </tbody>
</table>

问题在代码中指定。 我想在 select 中输入编辑表单,通过 model (@item.ParentId) 选择选项集,但我不知道该怎么做。 我解决了这个问题还是没有任何解决方案?

经过多次尝试和搜索,我找到了解决方案。 我只是使用“名称”属性而不是 asp-for。 asp-for 可以指定选择的选项。

Edit 表单中的 select 标签应该这样定义:

<select asp-for="@item.ParentId" class="form-control" name="ParentId" asp-items="@ViewBag.ParentList">
  <option value="0" disabled selected>Select an item...</option>
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM