如何在不使用ViewData的情况下将对象属性绑定到DropDownList中的数据源

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在不使用ViewData的情况下将对象属性绑定到DropDownList中的数据源相关的知识,希望对你有一定的参考价值。

我的kendo Grid中有一个DropDownList列。我想将DataSource中的ViewData [“genres”]更改为GenreViewModel属性“AllGenres”。我怎样才能做到这一点?不要忘记我使用js版本的Grid(不是mvc)。

我认为应该看起来像:

dataSource: @html.Raw(new System.Web.Script.Serialization.javascriptSerializer().Serialize("AllGenres"))

要么

dataSource: "AllGenres"

反对:

dataSource: @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["genres"]))

我的DropDownList:

function genreDropDownEditor(container, options) {
    $('<input required name="' + options.field + '"/>')
        .appendTo(container)
        .kendoDropDownList({
            autoBind: false,
            dataTextField: "GenreName",
            dataValueField: "GenreId",
            dataSource: @Html.Raw(new System.Web.Script.Serialization.JavaScriptSerializer().Serialize(ViewData["genres"]))               
});
<script type="text/kendo" id="genresTemplate">
    #if(data.Genre != null)
    { #

    #: Genre.GenreName #

    # } #

我的GenreViewModel:

public class GenreViewModel
{
    public int GenreId { get; set; }
    public string GenreName { get { return Enum.GetName(typeof(Genre), GenreId); } }

    public static List<GenreViewModel> AllGenres
    {
        get
        {
            return Enum.GetValues(typeof(Genre)).Cast<Genre>().Select(v => new GenreViewModel
            {
                GenreId = ((int)v)
            }).ToList();
        }
    }
}
答案

Stephen Muecke在评论中给出了答案。(不知道如何正确选择他的评论)

dataSource: @Html.Raw(Json.Encode(Model.AllGenres)).

但我没有在我的视图中声明模型,所以我使用了我的静态属性:

dataSource: @Html.Raw(Json.Encode(Number2.Models.GenreViewModel.GetAllGenres))

以上是关于如何在不使用ViewData的情况下将对象属性绑定到DropDownList中的数据源的主要内容,如果未能解决你的问题,请参考以下文章

如何在不使用 JavaScript 或 jQuery 的情况下将 div 的文本绑定到隐藏字段?

如何在不循环的情况下将数组(Range.Value)传递给本机 .NET 类型?

在不知道数据类型的情况下将值绑定到 PreparedStatement

如何在不使用共享首选项的情况下将数据存储为颤动的对象[关闭]

我们如何在不将 ViewController 对象推入其中的情况下将对象分配给 `UINavigationController`。

如何在不使用 C# 中的 T 对象的情况下将 Json 数组转换为单个 JSON 对象?