模型绑定复选框?

Model Binding a checkbox?

我一直使用 MVC 模型绑定,所以这对我来说是新的。我有一个 class 和 mvc 剃须刀形式。

public class Student
{
    public string Id { get; set; }
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public bool? IsNew { get; set; }
}

我的 mvc razorpage

<div class="form-group">
    <label class="checkbox-inline">
      <input type="checkbox" name="isNew" id="isNew">Import
    </label>
 </div>
 <div class="form-group">
     <label for="firstName">FirstName</label>
     <input class="form-control" name="firstName" id="firstName"/>
  </div>

我绑定名字的方式是

student.FirstName = request.Form.Get("firstName");

但是我无法对复选框使用相同的技术? 我尝试使用

       student.IsNew = request.Form.GetValues("isNew");
       student.IsNew = request.Form.Get("isNew");

我该怎么做?

您应该使用 MVC 模型绑定,这对您来说更容易。

模型绑定读取所有发布的数据、查询字符串值等并为您构建一个对象。模型绑定允许您的控制器代码与询问请求及其相关环境的肮脏分离。

public ActionResult Create()
{
   var vm = new Student();
   return View(vm);
}
[HttpPost]
public ActionResult Create(Student model)
{
   //You can check model.IsNew and model.FirstName properties here
   // TO DO : Save and Redirect to a success message action method
   // Ex : return RedirectToAction("SavedSuccessfully");
}

还有你的强类型剃刀视图

@model Student
@using (Html.BeginForm())
{
    <lable>FirstName </lable>@Html.TextBoxFor(d=>d.FirstName)
    <lable>FirstName </lable>@Html.TextBoxFor(d => d.LastName)
    <label>New ? </label>@Html.CheckBoxFor(g=>g.IsNew)
    @Html.HiddenFor(d=>d.Id)
    <p>
        <input id="BtnAdd" name="myButton" type="submit" value="Add" />
    </p>
}

早上好, 只是关于我如何设法解决这个问题的更新: 我查看了来自表单的值。

我用它来完成模型绑定工作。

       if (!string.IsNullOrEmpty(request.Form.Get("isNew")))
        {
            vehicle.IsNew = true;
        }
        else
        {
            vehicle.IsNew = false;
        }

为了将来参考,请始终使用 mvc 模型绑定器

当返回 IList 并且只需要 select 几个学生并将它们传递给 [HttpPost] public ActionResult Student(IFormCollection form, int[] SelectedSID) 时,您可以添加以下内容在您看来。

@model IList<MvcDWOL.Data.Student>

@{
    ViewData["Title"] = "Add Students";
}

@Html.Partial("_StatusMessage", @ViewData["StatusMessage"])

<div class="container"">
<div class="top-buffer"></div>
<div class="panel panel-primary" style="border:none">
<div class="panel-heading panel-head">Live</div>
<div class="panel-body">

@using (Html.BeginForm("AddEdit", "Student", FormMethod.Post))
{

        <div class="form-actions no-color">
        <p>
            <input type="submit" value="Save" class="btn btn-primary"/> 
        </p>
       </div>

<table> 
<tbody>
  <thead>
        <tr>
             <th>
                Add (checkbox)
            </th>
            <th>
               Name
            </th>
            <th>
               Type
            </th>
             <th style="display:none">
                  Start Date
                </th>
             <th>
                   Start Time
                </th>
              <th style="display:none">
                  End Date
                </th>
                <th>
                   End Time
                </th>   
        </tr>
    </thead>

   @if (Model.Any())
  { 
        foreach (var item in Model)
        {

                <tr>
                <th  style="display:none">
                <input id="item@(item.ID)" type="hidden" 
                name="SelectedSID"
                value="@item.ID"
                /> 
                </th>
                <th>   
                <div style="zoom:1.5;">
                    @Html.CheckBox("IsAdded",@item.IsAdded)
                 </div> 
                </th>
                <th>

                  @item.Name
                 <input id="item@(item.Name)" type="hidden"  name="Name" value="@item.Name"/>
                </th>
                <th>
                  @item.Type.TypeName
                <input id="item@(item.TypeID)" type="hidden"  name="TypeID" value="@item.TypeID"/> 
                </th>
                <th>
                   @item.StartTimeValue
                 <input id="item@(item.StartTime)" type="hidden"  name="StartTime" value="@item.StartTime"/> 
                 <input id="item@(item.StartTimeValue)" type="hidden"  name="StartTimeValue" value="@item.StartTimeValue"/> 
                </th>
                <th>
                   @item.EndTimeValue
                 <input id="item@(item.EndTime)" type="hidden"  name="EndTime" value="@item.EndTime"/> 
                 <input id="item@(item.EndTimeValue)" type="hidden"  name="EndTimeValue" value="@item.EndTimeValue"/> 
                </th>
            </tr>

         }
   }         
  </tbody>
</table>
        @Html.ValidationSummary()
        <div class="form-actions no-color">
        <p>
            <input type="submit" value="Save" class="btn btn-primary" /> 
        </p>
      </div>

}


</div></div></div>