У меня есть обязательная модель:
public class CreateBindingModel
{
public object1 object1 { get; set; }
public object2 object2 { get; set; }
}
И я хочу передать его через Create
форму в моем контроллере:
public ActionResult Create()
{
this.ViewBag.TaskId = new SelectList(this.db.Tasks, "Id", "Name");
return this.View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(CreateBindingModel createBindingModel)
{
//body
}
Мой Create.cshtml
выглядит так:
@model namespace.Models.CreateBindingModel
@using (Html.BeginForm())
{
@Html.AntiForgeryToken()
<div class="form-horizontal">
<h4>Object1</h4>
@Html.ValidationSummary(true, "", new { @class = "text-danger" })
<div class="form-group">
@Html.LabelFor(model => model.object1.FirstName, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.object1.FirstName, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.object1.FirstName, "", new { @class = "text-danger" })
</div>
</div>
<h4>Object 2</h4>
<div class="form-group">
@Html.LabelFor(model => model.object2.TaskId, "TaskId", htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.DropDownList("TaskId", null, htmlAttributes: new { @class = "form-control" })
@Html.ValidationMessageFor(model => model.object2.TaskId, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
@Html.LabelFor(model => model.object2.DaysToExpire, htmlAttributes: new { @class = "control-label col-md-2" })
<div class="col-md-10">
@Html.EditorFor(model => model.object2.DaysToExpire, new { htmlAttributes = new { @class = "form-control" } })
@Html.ValidationMessageFor(model => model.object2.DaysToExpire, "", new { @class = "text-danger" })
</div>
</div>
<div class="form-group">
<div class="col-md-offset-2 col-md-10">
<input type="submit" value="Create" class="btn btn-default" />
</div>
</div>
</div>
}
Мой вопрос: почему я могу получить DaysToExpire
в object2
по этой форме сверху, но я не могу получить TaskId
из выпадающего списка в object2 (его ноль в Create
контроллере)? Выпадающие списки генерируются правильно в моей форме
object1
форма работает отлично
EDIT
Когда я делаю недвижимость в моем BindingModel
классе:
public int TaskId { get; set; }
И переименуйте model.object2.TaskId
в @HTML
и измените его на model.TaskId
, он отлично работает