2017-07-14 12 views
0

私はasp.net mvcを使用しています。これはまっすぐなものかもしれない。今列挙型にバインドされたドロップダウンリスト

public static SelectList ToSelectList<TEnum>(this TEnum enumObj) where TEnum : struct, IComparable, IFormattable, IConvertible 
    { 
     var values = from TEnum e in Enum.GetValues(typeof(TEnum)) 
        select new { Id = Convert.ToInt32(e), Name = e.ToString() }; 
     return new SelectList(values, "Id", "Name", enumObj); 
    } 

を次のように関数が定義されて

public class SearchControlViewModel 
{ 
    ... 
    public GlobalEnums.IndicatorGroup IndicatorGroups { get; set; } 
    ... 

} 

ToSelectListを次のように

@Html.DropDownListFor(m => m.IndicatorGroups, Model.IndicatorGroups.ToSelectList(), new { @id = "ddlIndicatorGroup" }) 

モデルが定義され、以下のように私は列挙型に私のドロップダウンリストを結合しています列挙型にスペースを加えた値を追加しました。これらの値を "un derscores "

public enum IndicatorGroup 
    { 
     [EnumMember(Value = "Include ANY MatchingIndicator")] 
     Include_ANY_MatchingIndicator = 1, 
     [EnumMember(Value = "Include ALL MatchingIndicator")] 
     Include_ALL_MatchingIndicator, 
     [EnumMember(Value = "Exclude ANY MatchingIndicator")] 
     Exclude_ANY_MatchingIndicator, 
     [EnumMember(Value = "Exclude ALL MatchingIndicator")] 
     Exclude_ALL_MatchingIndicator 
    }; 

私はこれをどのように行うことができますか?

MVCで
+1

、[' EnumDropDownListFor'(https://msdn.microsoft.com/en-us/library/system.web.mvc.html.selectextensions.enumdropdownlistfor%28v=を使用vs.118%29.aspx)を使用して列挙型をドロップダウンリストに直接バインドします。 – mmushtaq

+0

(DescriptionAttributeを使用して)[この回答](https://stackoverflow.com/questions/388483/how-do-you-create-a-dropdownlist-from-an-enum-in-asp-net-mvc) ') –

答えて

0

私の要件は、私は、文字列を置き換えるように、十分な単純なものでしたので。私は同じことをするより良い方法がなければならないと感じています。 `MVC-5`において

public static SelectList ToSelectList<TEnum>(this TEnum enumObj) where TEnum : struct, IComparable, IFormattable, IConvertible 
{ 
    var values = from TEnum e in Enum.GetValues(typeof(TEnum)) 
       select new { Id = Convert.ToInt32(e), Name = e.ToString().Replace('_', ' ') }; 
    return new SelectList(values, "Id", "Name", enumObj); 
} 
0

我々は、直接私たちのすべての列挙型と結合することができるEnumDropDownListForを持って、DropDownListForすることは非常に似ている

サンプル例:

public enum Courses 
{ 
    [Display(Name = "ASP.NET")] 
    ASPNet, 
    [Display(Name = "C# .NET")] 
    CSharp, 
    [Display(Name = "Java")] 
    Java, 
    [Display(Name = "Objective C")] 
    ObjectiveC, 

} 

モデル:

public class Student 
{ 
    [Key] 
    public String StudentId { get; set; } 

    [Display(Name="Student Name")] 
    public String Student { get; set; } 

    [Display(Name = "Languages")] 
    public Courses Language { get; set; } 


} 

表示中:

<div class="form-group"> 
    @Html.LabelFor(model => model.Languages, htmlAttributes: new { @class = "control-label col-md-2" }) 
    <div class="col-md-10"> 
     @Html.EnumDropDownListFor(model => model.Languages, htmlAttributes: new { @class = "form-control" }) 
     @Html.ValidationMessageFor(model => model.Languages, "", new { @class = "text-danger" }) 
    </div> 
</div> 

有用なリンク:http://www.advancesharp.com/blog/1163/mvc-enumdropdownlistfor-bind-with-enum-example

おかげ

カルティク

+0

私はmvc 4.5を使用しています – Samra

関連する問題