28

現在、モデルのブール値プロパティが Html.EditorFor ヘルパーに渡されるビューをスキャフォールディングしています。

@Html.EditorFor(model => model.EndCurrentDeal)

すべて順調ですが、私が本当にやりたいことは、それを次のようなドロップダウンにマッサージすることです。

<select>
    <option value="true" selected="selected">Yes</option>
    <option value="false">No</option>
</select>

それを達成する最も簡単な方法は何ですか?

ありがとう、

クリス

4

4 に答える 4

29

次のようなものを試すことができます

<%= Html.DropDownList(
    "", 
    new SelectList(
        new[] 
        { 
            new { Value = "true", Text = "Yes" },
            new { Value = "false", Text = "No" },
        }, 
        "Value", 
        "Text",
        Model
    )
) %>

デフォルト値が必要な場合:

<%= Html.DropDownList(
        "", 
        new SelectList(
            new[] 
            { 
                new { Value = "", Text = "None" },
                new { Value = "true", Text = "Yes" },
                new { Value = "false", Text = "No" },
            }, 
            "Value", 
            "Text",
            Model
        )
    ) %>
于 2013-03-18T14:57:56.160 に答える
24

MVC4

@*/////////////////// bool ////////////////////////////////*@
@model bool

@Html.DropDownListFor(m => m, new SelectList(
        new[] 
        { 
            new { Value = "true", Text = "Yes" },
            new { Value = "false", Text = "No" },
        },
        "Value",
        "Text",
        Model
    ))

@*/////////////////// bool? ////////////////////////////////*@    
@model bool?

@Html.DropDownListFor(m => m, new SelectList(
        new[] 
        { 
            new { Value = "", Text = "(none)" },
            new { Value = "true", Text = "Yes" },
            new { Value = "false", Text = "No" },
        },
        "Value",
        "Text",
        Model
    ))
于 2013-10-02T15:47:56.267 に答える
5

Francois Borgies からの非常に役立つ回答に触発されたので、 @Html.DropDownListで使用できる ブール値のSelectListを作成するカスタム メソッドを作成することにしました。すべてのビューで使用できるヘルパー メソッドがある場合は、カミソリ ビューで必要なコードの量が削減されます。

私のプロジェクトには、フォルダにCustomHelpers.csクラスがあります: App_Code/Helpers

namespace YourProjectName.App_Code.Helpers
{
    public static class CustomHelpers
    {
        public static SelectList SelectListForBoolean(object selectedValue = null)
        {
            SelectListItem[] selectListItems = new SelectListItem[2];

            var itemTrue = new SelectListItem();
            itemTrue.Value = "true";
            itemTrue.Text = "Yes";
            selectListItems[0] = itemTrue;

            var itemFalse = new SelectListItem();
            itemFalse.Value = "false";
            itemFalse.Text = "No";
            selectListItems[1] = itemFalse;

            var selectList = new SelectList(selectListItems, "Value","Text", selectedValue);

            return selectList;
        }           
    }
}

作成ビューでは、次のように使用できます。

@model Foo
@using YourProjectName.App_Code.Helpers;
...
@Html.DropDownList("EndCurrentDeal", CustomHelpers.SelectListForBoolean(), "-select-")

編集ビュー用

@model Bar
@using YourProjectName.App_Code.Helpers;
...
@Html.DropDownList("EndCurrentDeal", CustomHelpers.SelectListForBoolean(Model.EndCurrentDeal), "-select-")

私のヘルパー メソッドはSelectListを作成するため、純粋な HTML ヘルパーではありませんが、Rahul Rajat Singh が優れた記事「HTML ヘルパーに関する絶対的な初心者向けチュートリアル」と「ASP.NET MVC でのカスタム HTML ヘルパーの作成」で提示したのと同じ機能に従います。

于 2016-12-04T07:59:42.503 に答える