Я хочу отображать строковый тип как флажок в представлении MVC, но возвращает его как строковый тип в сообщении HTTP. Проблема в том, что он возвращает false в HTTP Post. Ниже мой код:
Посмотреть:
@model List<Car>
foreach(var car in Model){
bool isFourWheel = false;
if(bool.TryParse(car.IsFourWheel, out isFourWheel){
@Html.CheckBox("IsFourWheel", isFourWheel); //need to be rendered as checkbox, but returns string type on HTTP POST
}
}
Модель:
public class Car
{
public string IsFourWheel { get; set; } //bad naming, but it can contain any type, include boolean
}
Контроллер:
public ActionResult Index()
{
var cars = new List<Car>(){ new Car(){IsFourWheel = "true"},new Car(){IsFourWheel = "false"} };
return View(cars);
}
[HttpPost]
public ActionResult Index(List<Car> cars) **Problem IsFourWheel is false when true is selected **
{
return View(cars);
}
Мы очень ценим любой идеал.
2
Pingpong
26 Авг 2011 в 14:49
2 ответа
Вы можете изменить свою модель просмотра следующим образом:
public class Car
{
public string IsFourWheel { get; set; }
public bool IsFourWheelBool { get { return bool.Parse(IsFourWheel); } }
}
Ваш взгляд будет выглядеть так:
@Html.EditFor(x => x.IsFourWheelBool);
1
Robin van der Knaap
26 Авг 2011 в 11:53
Думаю, будет проще, если вы добавите Id в свою модель. Именно так
Модель:
public class Car
{
public int CarID { get; set; }
public string IsFourWheel { get; set; }
}
Просмотр:
@model IEnumerable<Car>
foreach (var car in Model)
{
if(car.IsFourWheel == "true"){
<input type="checkbox" name="carID" value="@car.CarID" checked="checked" />
}
else
{
<input type="checkbox" name="carID" value="@car.CarID" />
}
}
Контроллер:
[HttpPost]
public ActionResult Index(List<int> carID)
{
//handle selected cars here
return View();
}
1
dohaivu
26 Авг 2011 в 15:22
Похожие вопросы
Связанные вопросы
Новые вопросы
asp.net-mvc
ASP.NET MVC Framework - это платформа и инструмент веб-приложений с открытым исходным кодом, которые реализуют версию шаблона модель-представление-контроллер (MVC), адаптированную к веб-приложениям и построенную на основе технологии ASP.NET.