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>