MVC3 Dropdown - Ошибка состояния модели на HttpPost
Я получаю следующую ошибку для моего выпадающего списка по методу [HttpPost]. Значения привязаны правильно, это не проблема. Но в состоянии модели постоянно возникает ошибка. Ошибка:
Преобразование параметра из типа 'System.String» печатать 'System.Web.Mvc.SelectListItem» не удалось, потому что преобразователь типов не может конвертировать между этими типами.
В моей модели я использую следующее.
public class UploadDocumentViewModel {
[Display(Name = "Document Title")]
public string DocumentTitle { get; set; }
public IEnumerable FileType { get; set; }
}
FileTypeViewModel:
public class FileTypeViewModel
{
public string FileTypeId { get; set; }
public string FileTypeDescription { get; set; }
}
В контроллере HttpGet
[HttpGet]
public ActionResult UploadDocument()
{
var fileTypes = iFileTypeRepository.GetFileTypes(); // This is for FileType DropDownlist of values
UploadDocumentViewModel uploadDocumentViewModel = new UploadDocumentViewModel
{
FileType = fileTypes.Select(x => new SelectListItem
{
Text = x.FileTypeDescription,
Value = Convert.ToString(x.FileTypeId)
}).ToList()
};
return View(uploadDocumentViewModel);
}
В методе [HttpPost]
public ActionResult UploadDocument(FormCollection form,UploadDocumentViewModel uploadDocumentViewModel )
{
//FileTypes
string ddlFileTypeSelectedValue = Convert.ToString(form["FileType"]);
var ddlFileType = iFileTypeRepository.GetFileTypes();
uploadDocumentViewModel.FileType = new SelectList(ddlFileType, "FileTypeId", "FileTypeDescription", ddlFileTypeSelectedValue);
// No Errors, then Submit
if (ModelState.IsValid)
{
-- Redirect to some other View
}
else
{
return View(uploadDocumentViewModel);
}
}
Ввиду
@model xxx.Core.Model.UploadDocumentViewModel
@{
ViewBag.Title = "Upload Document";
}
Upload Client Document
@Html.ValidationSummary()
@using (Html.BeginForm("UploadDocument", "Document", "FormMethod.Post"))
{
Upload Client Document
@Html.LabelFor(model => model.DocumentTitle)
@Html.TextBoxFor(model => model.DocumentTitle, new { @id = "txtDocumentTitle" })
@Html.ValidationMessageFor(model => model.DocumentTitle)
@Html.LabelFor(model => model.FileType)
@Html.DropDownListFor(model => model.FileType, Model.FileType, "Please Select", new { @id = "ddlFileType" })
<br>
}
@{Html.EndForm();}