0
我在[HttpPost]方法上的Dropdownlist出現以下錯誤。這些值綁定正確,這不是問題。但是模型狀態一直存在錯誤。錯誤是:MVC3下拉列表 - 在HttpPost上的模型狀態錯誤
從類型'System.String'到類型'System.Web.Mvc.SelectListItem'的參數轉換失敗,因爲沒有類型轉換器可以在這些類型之間進行轉換。
在我的模型中,我使用了以下內容。
public class UploadDocumentViewModel {
[Display(Name = "Document Title")]
public string DocumentTitle { get; set; }
public IEnumerable<SelectListItem> FileType { get; set; }
}
FileTypeViewModel:
public class FileTypeViewModel
{
public string FileTypeId { get; set; }
public string FileTypeDescription { get; set; }
}
在Controller 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";
}
<h2>
Upload Client Document</h2>
@Html.ValidationSummary()
@using (Html.BeginForm("UploadDocument", "Document", "FormMethod.Post"))
{
<div>
<fieldset>
<legend>Upload Client Document</legend>
<div class="editor-label">
@Html.LabelFor(model => model.DocumentTitle)
</div>
<div class="demo">
@Html.TextBoxFor(model => model.DocumentTitle, new { @id = "txtDocumentTitle" })
@Html.ValidationMessageFor(model => model.DocumentTitle)
</div>
<div>
@Html.LabelFor(model => model.FileType)
</div>
<div>
@Html.DropDownListFor(model => model.FileType, Model.FileType, "Please Select", new { @id = "ddlFileType" })
</div>
</fieldset>
</div>
<br />
}
@{Html.EndForm();}
UploadDocumentViewModel'不包含'FileTypeId'的定義,也沒有接受第一個參數類型的擴展方法'FileTypeId'。這是編譯時間錯誤 – 2013-03-19 10:33:23
您需要添加該屬性在您的,它會返回選定的項目編號 – 2013-03-19 10:34:49
可以接受添加一個新的屬性? – 2013-03-19 10:52:00