JobPlanViewModel
public class JobPlanViewModel : IMapFrom<JobPlan>, IJobPlan
{
...
[Display(Name = "Duration")]
public decimal Duration { get; set; }
...
}
我的剑道网格
@(Html.Kendo().Grid<JobPlanViewModel>()
...
.Editable(editable => editable.Mode(GridEditMode.PopUp)
.TemplateName("AdminJobPlanJobFormEditor")
.Window(w => { w.Title(""); })
.DisplayDeleteConfirmation(false))
...
.Update(update => update.Action("JobPlanGrid_Update", "JobPlan", new { area = "AdminJobPlan" }))
)
AdminJobPlanJobFormEditor.cshtml
@model DefaultViewModel.JobPlanViewModel
@using Kendo.Mvc.UI
...
<div class="col-md-8 col-xs-12">
@(Html.Kendo().NumericTextBoxFor(model => model.Duration)
.Value(0.1m)
.Step(0.1m)
.Min(0.1m).Decimals(1).Format("N1")
.HtmlAttributes(new { style = "width: 100%; padding: 0px;", required = "required" }))
@Html.ValidationMessageFor(model => model.Duration)
</div>
我有一个使用弹出编辑模式的Kendo MVC Grid,带有cshtml模板。
在该模板中,我有一个Kendo MVC Numerictextbox对于duration
字段,我想将其默认值设置为0.1,当用户点击“保存”时,该值应该发布到服务器端操作{ {1}}即使他不编辑JobPlanGrid_Update
字段
在用户界面中,一切似乎都没问题,当弹出编辑窗口时,默认值0.1显示在文本框中,最小值,步长值都没问题,但是当我点击“保存”时,我发现{{如果我没有手动编辑duration
,则发布的字段始终为0。
我已经设置了Grid的Datasource parameterMap。通过编写duration
,我发现当它进行映射时(在网格向duration
发送请求之前),console.log()
已经为0,这超出了我的预期。 / p>
我做错了什么,我怎样才能实现我想要的目标?谢谢!
EDITED
我的完整网格是这样的:
JobPlanGrid_Update
对不起格式化,我不知道为什么shift + tab会清除所有缩进而不是清除一个标签....
答案 0 :(得分:1)
您尚未完全发布网格,因此我只需假设它使用Ajax绑定。
这是因为剑道网格的工作方式。我以前遇到过类似的问题。例如,如果您尝试使用jquery更改弹出编辑器上的输入值,您将看到更改的值不会发布到您的控制器(该值不会在网格的数据源中更改),除非您在更改其值后显式触发输入的更改事件。
无论如何,您正在做的不是为网格中的属性设置默认值的正确方法。在网格的数据源中,您应该这样做:
.DataSource(dataSource => dataSource
.Ajax()
.Model(m => m.Field(f => f.Duration).DefaultValue(0.1M))
// other configurations...
)