2015-12-09 3 views
1

Я всегда использовал привязку модели MVC, так что это новое для меня. У меня есть бритва класса и mvc.Model Binding a checkbox?

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

Моего razorpage

MVC
<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"); 

Как я могу это сделать?

+1

Если вы используете modelbinding, не просто иметь 'параметр Student' на вашем методе действия? См. Также: http://stackoverflow.com/questions/12674572/proper-usage-of-net-mvc-html-checkboxfor для лучшего синтаксиса вашей страницы бритвы. – thekip

+0

. Вы не привязаны к своей собственности. Флажок без значения возвращает «' on », который не может быть привязан к свойству' boolean'. И если флажок снят, ничего не опубликовано. Почему вы не используете привязку к модели? –

ответ

0

Утро, Просто обновление о том, как мне удалось решить эту проблему: я смотрел на те ценности, которые грядет из формы.

Я использовал это, чтобы получить работу по привязке модели.

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

И в будущем, всегда используют Mvc модели вяжущие

1

Вы должны использовать привязку модели MVC, которая облегчает вам работу.

Привязка к модели читает все опубликованные данные, значения querystring и т. Д. И строит для вас объект. Связывание модели позволяет вашему контроллеру оставаться в чистоте отделенными от грязности запроса запроса и связанной с ним среды.

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> 
} 
+0

Я всегда использовал привязку модели MVC, но я отлаживаю эту проблему для устаревшего кода. Возможно, мне придется отменить коды и вместо этого использовать привязку модели MVC. – yuvs