首页 > 解决方案 > 包含 ViewComponent 的表单

问题描述

我不知道如何在表单中使用 ViewComponent

表单正确呈现(下拉列表中的值),但模型绑定在发布表单时失败

这是视图

<form asp-action="" method="post">
    <div asp-validation-summary="All"></div>
    <div class="row">
        <vc:periodi model="@(Model.Periodi)"></vc:periodi>
    </div>

这是视图组件

<div class="col-2">
@(Html.Kendo().DropDownListFor(a => a.Anno)
                    .DataTextField("Text")
                    .DataValueField("Value")
                    .BindTo(Model.Anni)
                    .HtmlAttributes(new { style = "width: 100%" }))

无论我在下拉列表中选择什么,模型的 Object Periodi 内的变量 Anno 都是 null

我检查了呈现的 HTML

<input id="Anno" name="Anno" ...

我认为,根据我在 MVC 方面的经验,模型绑定器的工作应该类似于“Periodi.Anno”。有什么建议吗?

标签: asp.net-coremodel-bindingasp.net-core-viewcomponent

解决方案


根据您的经验,名称应该是Periodi.Anno绑定 ViewComponent 属性。

作为我的测试input标签如下:

<input asp-for="Name" name="MVCSubModel.Name" class="form-control" />

我建议你试试:

@(Html.Kendo().DropDownListFor(a => a.Anno)
                .DataTextField("Text")
                .DataValueField("Value")
                .BindTo(Model.Anni)
                .HtmlAttributes(new { style = "width: 100%"; name = "Periodi.Anno" }))

推荐阅读