在Post动作方法中获取下拉列表的文本

时间:2012-02-13 16:51:42

标签: asp.net-mvc asp.net-mvc-3 razor entity-framework-4.1

我的asp.net MVC3应用程序中有一个Razor视图,其下拉列表如下:

@Html.DropDownListFor(model => model.Account.AccountType, new SelectList(Model.AccountTypes, "AccountTypeCode", "Abbreviation"))

此下拉列表位于表单内。当表单被发布到action方法并且viewmodel因模型绑定而被填充时,它获取值(AccountTypeCode)而不是dropdownlist的文本“Abbreviation”属性。我想得到这两个。我怎样才能在后期行动方法中获得这些。

请建议。

2 个答案:

答案 0 :(得分:0)

如果您需要对象的多个属性作为下拉列表的值,最简单的方法是在分部类中创建这些属性的组合 EF 4, how to add partial classes这个问题可以帮助你。您将能够将您将提供的一个属性下的值组合到您的下拉帮助程序。

如果您不想使用部分课程,我建议您创建自己的帮助程序,这比尝试使用不符合您需求的内容要容易得多。你可以这样做:

    @helper CustomDropdown(string name, IEnumerable<AccountTypes> valueList)
        {
        <select>
            @foreach (var item in valueList)
            {
                <option value="@item.Abbreviation @AccountTypeCode">@item.Abbreviation</option>
            }
        </select>
    }

Google“创建内联HTML帮助程序”以获取有关该主题的宝贵资源

答案 1 :(得分:0)

我最近一直在努力,我能做的最好的事情是:

ViewBag.Message = myModel.myProperty.ToString().

在控制器动作中。假设myPropertyAccountType

然后在我看来我刚刚做了

@ViewBag.Message

我遇到的下一个问题是它吐出了确切的文字,没有间距。我不得不使用帮助器来添加间距(但它是基于每个单词大写,因此“ThisIsSomeText”将显示为“This Is Some Text”。