Раскрывающийся список MVC 3 не получает значений - PullRequest
0 голосов
/ 11 февраля 2012

У меня есть выпадающий список на странице создания MVC 3, однако я не получаю никаких значений при размещении страницы.Мой код выглядит следующим образом: -

Просмотр: -

@using (Html.BeginForm("Create", "League", FormMethod.Post, new { enctype = "multipart/form-data" }))

{@ Html.ValidationSummary (true) League

    <div class="editor-label">
        @Html.LabelFor(model => model.League.fk_CountryID, "Country")
    </div>
    <div class="editor-field">
        @Html.DropDownList("fk_CountryID", "--Select One--")                                               *              
        @Html.ValidationMessageFor(model => model.League.fk_CountryID)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.League.LeagueName)
    </div>
    <div class="editor-field">
        @Html.EditorFor(model => model.League.LeagueName)
        @Html.ValidationMessageFor(model => model.League.LeagueName)
    </div>

    <div class="editor-label">
        @Html.LabelFor(model => model.League.Image)
    </div>
    <div class="editor-field">
        Upload File: <input type="file" name="Image" />
    </div>


    <p>
        <input type="submit" value="Create" />
    </p>
</fieldset>

}

Контроллер: -

        [HttpPost]
    public ActionResult Create([Bind(Exclude = "Image")]Country country, HttpPostedFileBase Image, League league)
    {
        if (ModelState.IsValid)
        {

            model.League = league;

            try
            {
                foreach (string file in Request.Files)
                {
                    HttpPostedFileBase fileUploaded = Request.Files[file];

                    if (fileUploaded.ContentLength > 0)
                    {
                        byte[] imageSize = new byte[fileUploaded.ContentLength];
                        fileUploaded.InputStream.Read(imageSize, 0, (int)fileUploaded.ContentLength);
                        model.League.Image = imageSize;
                    }
                }

                db.Leagues.AddObject(model.League);
                db.SaveChanges();
                return RedirectToAction("Index");
            }
            catch (Exception e)
            {
                ModelState.AddModelError("uploadError", e);
            }
        }

Что я делаю не так?Невозможно получить значение выпадающего списка в контроллере.

Спасибо за вашу помощь и время

1 Ответ

1 голос
/ 11 февраля 2012

Хорошо, исправили это, добавив SelectList в мою ViewModel следующим образом: -

        //Countries dropdown List
    public SelectList CountryList { get; set; }
    public string SelectedCountry { get; set; }

        public LeagueData PopulateCountriesDDL(string selected, Country country)
    {
        var typeList = new SelectList(db.Countries.ToList(), "CountryID", "CountryName", selected);
        LeagueData model = new LeagueData { CountryList = typeList, Country = country, SelectedCountry = selected };

        return model;
    }
...