我无法将视图(文本框和复选框)中的字段提交给我的模型,并且不确定如何继续。每次我点击应该提交给模型的按钮时,控制器都会检查应该由视图设置的字段,但一直返回 false。所以要么他们一开始就没有设置好,要么控制器读错了。无论哪种方式,我都不知所措。请帮助:X
查看(稍微简化):
@model Model
@Html.ValidationSummary()
@{ Html.BeginForm("PrintReport", "Controller", FormMethod.Get, new { @class = "form_ll" }); }
<h1>@ViewBag.Title</h1>
<div class="group">
@Html.ValidTextBoxFor(Model => Model.ToDate)
@Html.ValidTextBoxFor(Model => Model.FromDate)
@Html.CheckBoxFor(Model => Model.Geplakt)
@Html.CheckBoxFor(Model => Model.Geparafeerd)
@Html.CheckBoxFor(Model => Model.Verschreven)
@Html.CheckBoxFor(Model => Model.Geannuleerd)
@Html.CheckBoxFor(Model => Model.Vermist)
@Html.CheckBoxFor(Model => Model.Vernietigd)
@Html.CheckBoxFor(Model => Model.Onbruikbaar)
@Html.CheckBoxFor(Model => Model.Misdruk)
@Html.CheckBoxFor(Model => Model.Teruggevonden)
@Html.CheckBoxFor(Model => Model.InOnderzoek)
</div>
<div class="button">
@Html.Button("Print")
</div>
@{ Html.EndForm(); }
模型:
[Serializable]
public class Model : DomainObject
{
[DataType(DataType.Date)]
public DateTime? FromDate { get; set; }
[DataType(DataType.Date)]
public DateTime? ToDate { get; set; }
public bool Geplakt { get; set; }
public bool Geparafeerd { get; set; }
public bool Verschreven { get; set; }
public bool Geannuleerd { get; set; }
public bool Vermist { get; set; }
public bool Vernietigd { get; set; }
public bool Onbruikbaar { get; set; }
public bool Misdruk { get; set; }
public bool Teruggevonden { get; set; }
public bool InOnderzoek { get; set; }
public Model()
{
// Constructor
}
}
控制器:
public class Controller : ModelController<Model>
{
[HttpGet]
public ActionResult Index()
{
Model = new Model();
return InternalIndex();
}
[HttpGet]
public ActionResult InternalIndex()
{
return View("Index", Model);
}
[HttpGet]
public ActionResult PrintReport()
{
if (!Model.FromDate.HasValue || !Model.ToDate.HasValue)
ModelState.AddModelError("Date", "At leaste one date is null");
else {
if (Model.FromDate.Value.CompareTo(Model.ToDate.Value) >= 0)
ModelState.AddModelError("Date", "First date is later then the second one");
}
if(Model.IsAnythingChecked())
ModelState.AddModelError("Checkboxes", "You haven't checked any checkboxes");
if (ModelState.IsValid)
{
return View("PrintReport", Model);
}
else
{
return InternalIndex();
}
}