在同一表单中使用复选框列表和 textbox/html 输入的示例?

Example of using a checkboxlist AND textbox/html input within the same form?

我想使用 ASP.NET MVC 和 C# 在一个视图 (.cshtml) 上使用 CheckBoxList 和下拉列表以及其他 html 控件。

我苦苦挣扎的项目的最新主题是:当您想要 save/edit 表单时,在视图的顶部有这一行:

@model WebApplication1.Models.tbl_hobbies

然后您可以像这样使用 html helper/input 代码:

@Html.EditorFor(model => model.Name_and_Surname, new { htmlAttributes = new { @class = "form-control" } })

我试过的大多数复选框项目都有这个,所以它可以使用 foreach 等接收对象列表。

@model List<WebApplication1.Models.tbl_Hobbies>

然后是复选框列表代码:

@for (int i = 0; i < Model.Count(); i++)
{
    <tr>
        <td>
            @Html.CheckBoxFor(m => m[i].isSelected)
        </td>
        <td>
            @Html.DisplayFor(m => m[i].hobbyname)
            @Html.HiddenFor(m => m[i].hobbyid)
        </td>
    </tr>
}

任何人都可以告诉我如何在一个视图中结合这两种方法,或者任何地方的例子吗?我已经搜索并尝试实施大多数解决方案,但 none 正在运行。请协助。

您可以让一个 ViewModel 具有两种不同的属性,一种是 tbl_hobbies,另一种是 List<tbl_hobbies>。所以它应该看起来像:

public class HobbiesViewModel
{
    public tbl_hobbies Hobby { get; set; }

    public List<tbl_hobbies> Hobbies { get; set; }
}

在您看来 (.cshtml),您可以将 ViewModel 用作:

@model YourNameSpace.HobbiesViewModel

现在您可以将 EditorFor(..) 用作:

@Html.EditorFor(model => model.Hobby.Name_and_Surname, new { htmlAttributes = new { @class = "form-control" } })

对于您的复选框,您可以使用 foreach 循环作为:

@foreach (var hobby in Model.Hobbies)
{
  <tr>
    <td>
        @Html.CheckBoxFor(m => hobby.isSelected)
    </td>
    <td>
        @Html.DisplayFor(m => hobby.hobbyname)
        @Html.HiddenFor(m => hobby.hobbyid)
    </td>
   </tr>
}

最后,在您的控制器操作中:

public ActionResult SomeAction()
{
   var hobbiesViewModel = //get the relevant data for your view model. 

   return View(hobbiesViewModel);
}