asp.net 核心 Begin Collection Item 核心不适用于 kendo 控件
asp.net core Begin Collection Item core not working with kendo controls
我在 asp.net 核心中使用了 BeginCollectionItem。在这个集合中,我使用了 kendo 组合框和日期选择器,当 post 数据时,这两个数据都没有与模型列表绑定。任何人都知道它。
下面是 cshtml 文件的代码示例
@using HtmlHelpers.BeginCollectionItemCore
@using DemoProject.Model
@model BatchDetail
<tr data-rownum="@Model.Seq">
@using (Html.BeginCollectionItem("oBatchDetails"))
{
<td>
@Html.EditorFor(model => model.CheckCardNo, new { htmlAttributes = new { @class = "form-control input-sm patientCheckCard clsAlphaNumericText", maxlength = "50", autocomplete = "off" } })
</td>
<td>
@(Html.Kendo().DatePickerFor(model => model.CheckDate).Format("MM/dd/yyyy").HtmlAttributes(new { style = "width:115px", @class = "smalldtpicker paidDate", autocomplete = "off", @type = "" }))
</td>
}
</tr>
当我在控制台中看到 $("#formid").serialize()
时。我找到了以下结果。
oBatchDetails%5B25e11650-70cd-4d04-9fe0-4ce0e621cbfd%5D.CheckCardNo=123456789&
CheckDate=12%2F27%2F2021&
检查日期应为 oBatchDetails%5B25e11650-70cd-4d04-9fe0-4ce0e621cbfd%5D.CheckDate=12%2F27%2F2021&
但 Begin 集合项无法处理此 kendo 日期选择器。
您可以尝试将 CheckDate
的名称更改为 $(function(){})
中的正确格式:
$(function () {
$("input[name='CheckDate']").attr("name", $("input[id$='CheckCardNo']").attr("name").replace("CheckCardNo", "CheckDate"));
});
我找到了 kendo 控件的解决方案。要解决此问题,需要调用渲染函数以使用 kendo 控件。
从 https://www.telerik.com/forums/datepicker-error-with-core-5-0
获得参考
下面是更正后的代码,它与 begin collection item core 一起工作正常。
@using HtmlHelpers.BeginCollectionItemCore
@using DemoProject.Model
@model BatchDetail
<tr data-rownum="@Model.Seq">
@using (Html.BeginCollectionItem("oBatchDetails"))
{
<td>
@Html.EditorFor(model => model.CheckCardNo, new { htmlAttributes = new { @class = "form-control input-sm patientCheckCard clsAlphaNumericText", maxlength = "50", autocomplete = "off" } })
</td>
<td>
@{
Html.Kendo().DatePickerFor(model => model.CheckDate).Format("MM/dd/yyyy").HtmlAttributes(new { style = "width:115px", @class = "smalldtpicker paidDate", autocomplete = "off", @type = "" }).Render();
}
</td>
}
</tr>
我在 asp.net 核心中使用了 BeginCollectionItem。在这个集合中,我使用了 kendo 组合框和日期选择器,当 post 数据时,这两个数据都没有与模型列表绑定。任何人都知道它。
下面是 cshtml 文件的代码示例
@using HtmlHelpers.BeginCollectionItemCore
@using DemoProject.Model
@model BatchDetail
<tr data-rownum="@Model.Seq">
@using (Html.BeginCollectionItem("oBatchDetails"))
{
<td>
@Html.EditorFor(model => model.CheckCardNo, new { htmlAttributes = new { @class = "form-control input-sm patientCheckCard clsAlphaNumericText", maxlength = "50", autocomplete = "off" } })
</td>
<td>
@(Html.Kendo().DatePickerFor(model => model.CheckDate).Format("MM/dd/yyyy").HtmlAttributes(new { style = "width:115px", @class = "smalldtpicker paidDate", autocomplete = "off", @type = "" }))
</td>
}
</tr>
当我在控制台中看到 $("#formid").serialize()
时。我找到了以下结果。
oBatchDetails%5B25e11650-70cd-4d04-9fe0-4ce0e621cbfd%5D.CheckCardNo=123456789&
CheckDate=12%2F27%2F2021&
检查日期应为 oBatchDetails%5B25e11650-70cd-4d04-9fe0-4ce0e621cbfd%5D.CheckDate=12%2F27%2F2021&
但 Begin 集合项无法处理此 kendo 日期选择器。
您可以尝试将 CheckDate
的名称更改为 $(function(){})
中的正确格式:
$(function () {
$("input[name='CheckDate']").attr("name", $("input[id$='CheckCardNo']").attr("name").replace("CheckCardNo", "CheckDate"));
});
我找到了 kendo 控件的解决方案。要解决此问题,需要调用渲染函数以使用 kendo 控件。 从 https://www.telerik.com/forums/datepicker-error-with-core-5-0
获得参考下面是更正后的代码,它与 begin collection item core 一起工作正常。
@using HtmlHelpers.BeginCollectionItemCore
@using DemoProject.Model
@model BatchDetail
<tr data-rownum="@Model.Seq">
@using (Html.BeginCollectionItem("oBatchDetails"))
{
<td>
@Html.EditorFor(model => model.CheckCardNo, new { htmlAttributes = new { @class = "form-control input-sm patientCheckCard clsAlphaNumericText", maxlength = "50", autocomplete = "off" } })
</td>
<td>
@{
Html.Kendo().DatePickerFor(model => model.CheckDate).Format("MM/dd/yyyy").HtmlAttributes(new { style = "width:115px", @class = "smalldtpicker paidDate", autocomplete = "off", @type = "" }).Render();
}
</td>
}
</tr>