グリッドをフォームの一部として使用する必要があるとは思えません。通常、グリッドは他のコントロールとのバッチ フォーム送信ではなく、ajax を介して対話します - フォームからアンラップします。これだけでも頭痛の種から解放されます。
前半:
Kendo().DatePickerFor()、Kendo().DropDownListFor() などを使用してみてください。これらの Kendo コントロールに .Name() で明示的に名前を付ける必要はありません。これは、モデル バインディングに役立ちます。
後半:
10 進数以外の別のデータ型を使用してください。それは大変だと思いますか?日付が添付されていない時刻に TimeSpan 型を使用してみてください (成人男性は泣きます)。
通常、ブーリアン/チェックボックスの EditorTemplate は必要ありません。このトリックを使用してください (コードを残さないため、Razor を使用していると仮定します)。
columns.Bound(b => b.IsActive).ClientTemplate("<input type='checkbox' ${ IsActive == true ? checked='checked' : ''} disabled />");
グリッド DDL の最善の策は次のとおりです。
columns.ForeignKey(b => b.CustodianIdPrimary, Model.Custodians, "Id", "FullName").EditorViewData(new {ProjectId = Model.ProjectId}).EditorTemplateName("CustodianDropDownList");
Model.Custodians は、可能なすべてのアイテムのリストです。次に、EditorTemplate をこのリストにバインドするか、この特定の DDL でサブセットが必要な場合は、次のように ajax 呼び出しを行って入力します。
@model int
@(Html.Kendo().DropDownList()
.Name(ViewData.TemplateInfo.GetFullHtmlFieldName(""))
.DataValueField("Id")
.DataTextField("FullName")
.OptionLabel("Unassigned")
.DataSource(dataSource => dataSource
.Read(read => read.Action("ReadProjectCustodiansDdl", "SysMaint", new {projectId = ViewData["ProjectId"]}))
)
)
しかし、これは剣道提供の例です
@model object
@(
Html.Kendo().DropDownListFor(m => m)
.BindTo((SelectList)ViewData[ViewData.TemplateInfo.GetFullHtmlFieldName("") + "_Data"])
)
リスト全体を渡すためにこのサンプルで使用されている、最初の columns.ForeignKey での EditorViewData パラメータの使用に注意してください。
幸運を!