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(); }
}