如何在不使用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`。