从Html.DropdownListFor … MVC3获取文本
我有一个模特:
public class DocumentModel { public int TypeID { get; set; } public List DocumentTypes { get; set; } }
我有一个观点:
@Html.DropDownListFor(x => x.TypeID, Model.DocumentTypes, "- please select -")
我填充了我的下拉
var model = new DocumentModel(); model.DocumentTypes = GetDocumentTypes(); private static List GetDocumentTypes() { var items = new List { 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 } }
如何从我的下拉列表中获取文本? 谢谢
使用默认模型绑定可能无法轻松获得此function。 你需要这样一个小的解决方法。
1)向模型/ viewmodel添加新属性以存储选定的文本
public class DocumentModel { public int TypeID { get; set; } public List 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; } }
如果你想要做的是检索所选项目,那么这可以做的工作:
var selecteItem = model.DocumentTypes.Where(item=>item.Selected).FirstOrDefault();
干杯!
在你的模型上我会有另一个字符串 –
public string Selected{ get; set; }
那么在你看来:
@Html.DropDownListFor(model => model.Selected, new SelectList(Model.DocumentTypes, "Value", "Text"))
我偶然发现,试图找到从SelectList中获取文本值的方法,以DropDownList以外的格式显示它(我正在重用我的Edit ViewModel,因为它拥有我需要的所有数据)
var text = selectList.Where(q => q.Selected == true).First().Text;
- 格式化DateTime错误“模板只能用于字段访问,属性访问,单维数组索引..”
- 可以在ASP.NET / IIS 7中有选择地禁用gzip压缩吗?
- 在MVC(httpmodule)中将英文数字更改为波斯语,反之亦然?
- MVCvalidation低于/高于其他值
- ModelMetaData,自定义类属性和难以形容的问题
- 在cshtml razor视图中分离JavaScript
- MVC 3 – ObjectContext实例已被释放,不能再用于需要连接的操作
- 如何使用Foolproof的ModelAwareValidationAttribute进行不显眼的客户端validation
- 将rassor元素添加到razor元素中