得到Html.DropdownListFor ... MVC3文本(Get the text fro

2019-07-29 22:15发布

我有一个模型:

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
        }
    }

我如何从我的下拉列表中的文本? 谢谢

Answer 1:

你可能不使用默认的模型绑定得到这个容易。 你有这样一个小的解决方法。

1)一个新的属性添加到您的模型/视图模型来存储选定的文本

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;
   }
}


Answer 2:

如果你想要做的是检索所选项目那么这可以做的工作:

  var selecteItem = model.DocumentTypes.Where(item=>item.Selected).FirstOrDefault();

干杯!



Answer 3:

在你的模型我还会有一个字符串 -

public string Selected{ get; set; }

那么在你看来:

@Html.DropDownListFor(model => model.Selected, new SelectList(Model.DocumentTypes, "Value", "Text"))


Answer 4:

我迷迷糊糊这里试图找到让文本值出的SelectList比一个DropDownList其他的格式来显示它的方式(我重用我的编辑视图模型,因为它有所有我需要的数据)

var text = selectList.Where(q => q.Selected == true).First().Text;


文章来源: Get the text from Html.DropdownListFor…MVC3