我的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();
}
}
}
答案 0 :(得分:0)
Stephen Muecke在评论中给出了答案。(不知道如何正确选择他的评论作为答案)
dataSource: @Html.Raw(Json.Encode(Model.AllGenres)).
但我没有在我的视图中声明模型,所以 我使用了我的静态属性:
dataSource: @Html.Raw(Json.Encode(Number2.Models.GenreViewModel.GetAllGenres))