ASP MVC один объект в BindingModel пуст от формы к контроллеру - PullRequest
0 голосов
/ 07 мая 2019

У меня есть обязательная модель:

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, он отлично работает

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...