我有一个带有复选框的表单:
@using (Html.BeginForm("Edit", "Services", FormMethod.Post, new { @class = "stdform", role = "form" }))
{
<p>
<label>@Html.LabelFor(model => model.enabled)</label>
<span class="field">
<input type="checkbox" name="Enabled" id="Enabled" value="@Html.ValueFor(model => model.enabled)" />
</span>
<small class="desc">If the service is enabled.</small>
</p>
<p class="stdformbutton">
<button class="submit radius2">Submit</button>
<input type="reset" class="reset radius2" value="Reset Form" />
</p>
}
现在,当我将表单提交给我的操作方法时:
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ServicesViewModelEdit model)
{
}
我的model.enabled总是= false;
为什么会这样?
这是我的观点模型:
public class ServicesViewModelEdit
{
//public Service Service { get; set; }
[Key]
[Required]
public int Id { get; set; }
[Required]
public ServiceTypes ServiceType { get; set; }
[Required]
public String IpAddress { get; set; }
[Required]
public int Port { get; set; }
[Required]
public String Name { get; set; }
public String Description { get; set; }
public String Location { get; set; }
[Required]
public int PollInterval { get; set; }
[Required]
public int FailCount { get; set; }
public bool enabled { get; set; }
public List<ServiceTypes> ServiceTypes { get; set; }
}
答案 0 :(得分:1)
SWhy没有使用以下?:
@Html.CheckBox("enabled", new { @style = "margin: 3px 10px 0;" })
这对我来说很好......
答案 1 :(得分:0)
看起来它没有将复选框的值绑定到模型中的enabled
属性,因此该属性只是被设置为默认值。在viewmodel中将enabled
属性的第一个字母大写为Enabled
,以便它与您的复选框输入的name
属性匹配,它应该可以正常工作。
答案 2 :(得分:0)
作为替代方案;您可以使用@Html.CheckBoxFor(model => model.enabled)
,这将非常容易使用和读取,就像您已经为标签
答案 3 :(得分:0)
您必须在帖子中再次将模型传递给视图,因此请将帖子中的视图更改为此
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(ServicesViewModelEdit model)
{
return View(model);
}