Я не думаю, что ваш код будет компилироваться вообще. Помощник CheckBox
ожидает логическое значение в качестве второго аргумента, в то время как вы передаете ему строку.
Попробуй так:
@model MyViewModel
@using (Html.BeginForm())
{
foreach (var value in Model.InterestedIn)
{
<span>
<input type="checkbox" name="interestedin" value="@Html.AttributeEncode(value)" />
<label>@value</label>
</span>
<br />
}
<button type="submit">OK</button>
}
Предполагается, что у вас есть следующая модель представления:
public class MyViewModel
{
[Display(Name = "Would you be interested in receiving *")]
public IList<string> InterestedIn { get; set; }
}
и следующий контроллер:
public class HomeController : Controller
{
public ActionResult Index()
{
IList<string> lists = new List<string>();
lists.Insert(0, "Latest News");
lists.Insert(1, "Special Offers");
lists.Insert(1, "New Products");
var model = new MyViewModel();
model.InterestedIn = lists;
return View(model);
}
[HttpPost]
public ActionResult Index(MyViewModel model)
{
return View(model);
}
}
Если вы хотите использовать CheckBox
или, что еще лучше, помощник CheckBoxFor
, вам придется адаптировать модель представления так, чтобы она больше не имела свойства IList<string>
, а свойство IList<CheckBoxItemViewModel>
, где CheckBoxItemViewModel
другая модель представления, которая будет содержать метку и логическое свойство, указывающее, было ли выбрано это значение.