ASP.NET MVC - отправить форму DropDownListFor Ошибка - PullRequest
0 голосов
/ 26 апреля 2018

Я новичок в ASP.NET MVC и пытаюсь узнать, как отправить форму с проверкой.Мое представление Create работает нормально, в нем перечислены поля с выпадающими списками, но при отправке я получил эту ошибку System.ArgumentNullException: Value cannot be null..Я читаю часами и не могу заставить его работать.Нужна помощь!Это представление работает нормально, показывая раскрывающиеся списки с параметрами ..., но когда я нажимаю кнопку Отправить, я получил сообщение об ошибке, описанное выше.

@model MVCTest1.Models.Company
@{
    ViewBag.Title = "CreateCompany";
}
<h2>CreateCompany</h2>

@using (Html.BeginForm())
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)
    <div class="form-horizontal">
        <h4>Company</h4>
        <hr />
        @Html.ValidationSummary(true, "", new { @class = "text-danger" })
        <div class="form-group">
            @Html.LabelFor(model => model.Name, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.EditorFor(model => model.Name, new { htmlAttributes = new { @class = "form-control" } })
                @Html.ValidationMessageFor(model => model.Name, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Type2, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.Type2, new SelectList(ViewBag.CompanyType, "Value", "Name"), "Select Option")
                @Html.ValidationMessageFor(model => model.Type2, "", new { @class = "text-danger" })
            </div>
        </div>

        <div class="form-group">
            @Html.LabelFor(model => model.Industry, htmlAttributes: new { @class = "control-label col-md-2" })
            <div class="col-md-10">
                @Html.DropDownListFor(model => model.Industry, new SelectList(ViewBag.CompanyIndustry, "Value", "Name"), "Select Option")
                @Html.ValidationMessageFor(model => model.Industry, "", 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>
}

<div>
    @Html.ActionLink("Back to List", "Index")
</div>

Ваша помощь будет оценена по достоинству.

1 Ответ

0 голосов
/ 26 апреля 2018

Поскольку @StephenMuecke уже предложил изменение, вам необходимо также заполнить ViewBag в методе POST, чтобы он был доступен для вашего просмотра.

[HttpPost]
public ActionResult CreateCompany(Company comp)
    {
        ViewBag.CompanyType = GenericMethods.GetGenericPicks2("CompanyType2").OrderBy(e => e.Name);
        ViewBag.CompanyIndustry = GenericMethods.GetGenericPicks2("CompanyIndustry").OrderBy(e => e.Name);
        if (ModelState.IsValid)
        {
            Response.Write("Saving to DB");
            // code to save to database, redirect to other page
            return View(comp);
        }
        else
        {
            return View(comp);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...