我有一个模特:
public class DocumentModel { public int TypeID { get; set; } public List<SelectListItem> DocumentTypes { get; set; } }
我有一个观点:
@Html.DropDownListFor(x => x.TypeID,Model.DocumentTypes,"- please select -")
我填充了我的下拉
var model = new DocumentModel(); model.DocumentTypes = GetDocumentTypes(); private static List<SelectListItem> GetDocumentTypes() { var items = new List<SelectListItem> { new SelectListItem {Text = @"Text #1",Value = "1"},new SelectListItem {Text = @"Text #2",Value = "2"},}; return items; }
回传表单时,我有一个控制器操作:
[HttpPost] public void UploadDocument(DocumentModel model) { if (ModelState.IsValid) { // I want to get the text from the dropdown } }
如何从我的下拉列表中获取文本?谢谢
解决方法
使用默认模型绑定可能无法轻松获得此信息.你需要这样一个小的解决方法.
public class DocumentModel { public int TypeID { get; set; } public List<SelectListItem> DocumentTypes { get; set; } public string SelctedType { set;get;} }
2)使用Html.HiddenFor Helper方法在该属性的表单中创建隐藏变量
@Html.HiddenFor(x => x.SelctedType)
3)使用小javascript覆盖提交!即;当用户提交表单时,从下拉列表中获取所选文本,并将该值设置为隐藏字段的值.
$(function () { $("form").submit(function(){ var selTypeText= $("#TypeID option:selected").text(); $("#SelctedType").val(selTypeText); }); });
现在,在您的HTTPPost操作方法中,这将在SelectedType属性中可用.
[HttpPost] public void UploadDocument(DocumentModel model) { if(ModelState.IsValid) { string thatValue=model.SelectedType; } }