C# MVC剑道可编辑网格未保存枚举值

C# MVC剑道可编辑网格未保存枚举值,c#,kendo-ui,kendo-grid,kendo-asp.net-mvc,C#,Kendo Ui,Kendo Grid,Kendo Asp.net Mvc,我目前正在创建我的第一个剑道网格。除了我的状态枚举和代码(基本上是一个id)没有在创建操作上传递给我的控制器之外,几乎所有东西都在工作。 这是我的剑道格网(重要的部分)- MyViewModel(同样,重要的部分)- 状态和代码的下拉列表填充得很好,但它们实际上从未被网格拾取并传递给控制器。仅供参考-代码和状态字段必须为空。如果需要更多信息,请告诉我,我很乐意将其包括在内 我尝试过的 我尝试使用此处的解决方案-,但这对我不起作用。我认为出现问题的原因是下拉列表绑定到对象集合,因此,在服务器上

我目前正在创建我的第一个剑道网格。除了我的
状态
枚举和
代码
(基本上是一个id)没有在
创建
操作上传递给我的控制器之外,几乎所有东西都在工作。

这是我的剑道格网(重要的部分)-


MyViewModel(同样,重要的部分)-



状态和代码的下拉列表填充得很好,但它们实际上从未被网格拾取并传递给控制器。仅供参考-代码和状态字段必须为空。如果需要更多信息,请告诉我,我很乐意将其包括在内

我尝试过的

我尝试使用此处的解决方案-,但这对我不起作用。

我认为出现问题的原因是下拉列表绑定到对象集合,因此,在服务器上,绑定器无法将提交的对象映射到枚举值

您可以尝试将下拉列表的ValuePrimitive设置设置为true,这样,只有值字段(value)才会提交给服务器,而不是整个对象

e、 g

@使用MyProject.Data.Models
@使用MyProject.Helpers
@(Html.Kendo().DropDownListFor(m=>m)
.DataTextField(“文本”)
.DataValueField(“值”)
.ValuePrimitive(true)
.BindTo(EnumHelper.ToSelectList())
)
)

对这两个下拉列表执行相同操作。

我认为出现此问题是因为下拉列表绑定到对象集合,因此,在服务器上,绑定器无法将提交的对象映射到枚举值

您可以尝试将下拉列表的ValuePrimitive设置设置为true,这样,只有值字段(value)才会提交给服务器,而不是整个对象

e、 g

@使用MyProject.Data.Models
@使用MyProject.Helpers
@(Html.Kendo().DropDownListFor(m=>m)
.DataTextField(“文本”)
.DataValueField(“值”)
.ValuePrimitive(true)
.BindTo(EnumHelper.ToSelectList())
)
)

对两个下拉列表执行相同操作。

这就解决了问题!非常感谢!这就解决了!非常感谢!
             @(Html.Kendo().Grid<MyViewModel>()
                .Name("grid")
                .AutoBind(false)
                .HtmlAttributes(new { @class = "grid-clickable-edit" })
                .Columns(columns =>
                {
                    columns.Command(command =>
                    {
                        command.Edit().IconClass("fas fa-pencil").UpdateIconClass("fas fa-check").CancelIconClass("fas fa-ban");
                        command.Destroy().IconClass("fas fa-trash");
                    })
                        .ClientHeaderTemplate(Html.GridAddButton())
                        .Width(180);
                    //some fields
                    columns.Bound(model => model.Code)
                        .EditorTemplateName("GridDropdownEditor")
                        .EditorViewData(new {data = ViewBag.CodeList})
                        .ClientTemplate("#:Code#");
                    //some other fields
                    columns.Bound(model => model.StatusId)
                        .EditorTemplateName("StatusEditor");
                        .ClientTemplate("#:StatusName#");
                    //more fields
                })
                .Pageable(pg => pg.Numeric(false).PreviousNext(false))
                .Sortable()
                .Scrollable(scroll => scroll.Virtual(true))
                .Filterable(x => x.Enabled(false))
                .Editable(editable => editable.Mode(GridEditMode.InLine))
                .DataSource(dataSource => dataSource
                    .Ajax()
                    .Batch(true)
                    .ServerOperation(true)
                    .Model(model => { model.Id(m => m.Id); })
                    .Read(...)
                    .Create(update => update.Action(...))
                    .Update(update => update.Action(...))
                    .Destroy(update => update.Action(...))
                ))
@model object

@(Html.Kendo().DropDownListFor(m => m)
            .DataTextField("Text")
            .DataValueField("Value")
            .BindTo((IEnumerable<SelectListItem>)ViewData["data"])
)
@using MyProject.Data.Models
@using MyProject.Helpers

@(Html.Kendo().DropDownListFor(m => m)
    .DataTextField("Text")
    .DataValueField("Value")
    .BindTo(EnumHelper<BidStatus>.ToSelectList())
    )
    )
public enum Status
{
    Status1 = 1,
    Status2 = 2,
    Status3 = 3
}
public int? Code { get; set; }

public Status? StatusId { get; set; }

public string StatusName
{
    get { return StatusId.ToString(); }
}