模型绑定一个复选框?

时间:2015-12-09 17:43:35

标签: c# asp.net-mvc-4 razor model-binding

我一直使用MVC模型绑定,所以这对我来说是新的。我有一个班级和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>

我绑定firstName的方式是

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

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

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

我该怎么做?

3 个答案:

答案 0 :(得分:1)

您应该使用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>
}

答案 1 :(得分:0)

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

我用它来进行模型绑定工作。

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

为了将来参考,请始终使用mvc模型粘合剂

答案 2 :(得分:0)

当返回IList并且只需要选择几个学生并将它们传递给[HttpPost]公共ActionResult学生(IFormCollection表单,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>