Я делаю вид с DropDown. Представление поставляется с CategoryModel, которая выглядит следующим образом:
public class CategoryModel
{
[Required]
[Display(Name = "Categories")]
public List<Category> Categories { get; set; }
[Required]
[GreaterThan(ExceedValue = 0, ErrorMessage = "Please select a category.")]
[Display(Name = "SelectedCategoryId")]
public int SelectedCategoryId { get; set; }
}
Список категорий используется в представлении для заполнения DropDown, сначала взяв категории и поместив их в список SelectList, например:
@model RatingMVC3.Models.CategoryModel
@{
Layout = "~/Views/Shared/_MainLayout.cshtml";
ViewBag.Title = "Upload";
}
<h2>Upload</h2>
@using (Html.BeginForm("Upload", "Upload", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<input type="file" name="file" />
<input type="submit" value="OK" />
@Html.DropDownListFor(m => m.SelectedCategoryId, new SelectList(Model.Categories, "Id", "Description"), "-- Select Category --");
@Html.ValidationMessageFor(m => m.SelectedCategoryId);
@Html.HiddenFor(m => m.Categories);
}
Когда эта форма отправляется и модель возвращается в контроллер, я вижу, что модель возвращается в контроллер, но содержит пустой список вместо списка категорий, который был в представлении. (SelectedCategoryId там, как и ожидалось). Вот метод ActionResult в контроллере:
[HttpPost]
[Authorize]
public ActionResult Upload(HttpPostedFileBase file, CategoryModel model)
{
if (ModelState.IsValid)
{
if (file != null && file.ContentLength > 0)
{
var FileExtension = Path.GetExtension(file.FileName);
string Path1 = null;
string FileName = null;
do
{
var randomName = Path.GetRandomFileName();
FileName = Path.ChangeExtension(randomName, FileExtension);
Path1 = Path.Combine(Server.MapPath("~/Images"), FileName);
} while (System.IO.File.Exists(Path1));
file.SaveAs(Path1);
if (UploadService.SaveImage(FileName, System.Web.HttpContext.Current.User.Identity.Name, model.SelectedCategoryId))
{
return RedirectToAction("Uploaded", "Upload");
}
}
return RedirectToAction("Index", "Home");
}
return View(model);
}
Пустой список - проблема для меня, потому что, как вы можете видеть, если ModelState недопустим, представление снова будет возвращено с той же моделью и должно быть заполнено категориями.
Я надеюсь, что кто-то может ответить на это;) Я с удовольствием укажу больше информации, если это необходимо, заранее спасибо