【问题标题】:Form containing with ViewComponent包含 ViewComponent 的表单
【发布时间】:2018-10-18 12:05:05
【问题描述】:

我不知道如何在表单中使用 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%" }))

无论我在下拉菜单中选择什么,Model的Object Periodi里面的变量Anno都是null

我检查了呈现的 HTML

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

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

【问题讨论】:

    标签: asp.net-core model-binding asp.net-core-viewcomponent


    【解决方案1】:

    根据您的经验,名称应为 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" }))
    

    【讨论】:

    • 是的,我已经尝试过您的解决方案并且它有效。问题是有两个对象与 MVCSubModel 的硬编码名称相关联,它不应该。如果我更改房产名称怎么办?好吧,重要的是结果,也许我应该在 GitHub 上写一个问题
    • @FrancescoVenturini 你说的两个对象是什么意思?对于另一种选择,我建议您尝试将整个对象从视图传递到视图组件,例如 &lt;vc:periodi model="@(Model)"&gt;&lt;/vc:periodi&gt; 和 .BindTo(Model.Periodi.Anni)
    猜你喜欢
    • 1970-01-01
    • 2021-03-15
    • 1970-01-01
    • 2016-06-08
    • 2011-02-08
    • 1970-01-01
    • 1970-01-01
    • 2013-08-01
    • 2011-04-02
    相关资源
    最近更新 更多