首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >使用partial to controller而不是back value from partial提交表单

使用partial to controller而不是back value from partial提交表单
EN

Stack Overflow用户
提问于 2021-03-18 15:14:42
回答 1查看 22关注 0票数 0

我在Razor Page中有这样的表单(我删除了不需要的数据):

代码语言:javascript
运行
复制
<form class="form-group form-popup" 
    asp-action="Update"
    data-ajax="true"
    data-ajax-method="POST">
    @Html.AntiForgeryToken()     
    <div class="popup-section">                                         
        <partial name="_FailureCostPartial" model="@Model.CostEdit" />
    </div>
    
    <div class="text-center mt-5 popup-edit-buttons">
        <button class="btn form-success" type="button" onclick="SubmitForm('@popupId')">
            @Localizer.GetLocalizedString("button_Save")<i class="fas fa-check fa-fw"></i>
        </button>
        <button class="btn form-danger" type="button" data-dismiss="modal">
            @Localizer.GetLocalizedString("button_Cancel")<i class="fas fa-times fa-fw"></i>
        </button>
    </div>
</form>

放入此视图的模型如下所示:

代码语言:javascript
运行
复制
public class FailureEditViewModel
{
    public FailureForEditDto Failure { get; set; }
    public FailureCostEditViewModel CostEdit { get; set; }
    public List<SelectListItem> Suppliers { get; set; }
}

和_FailureCostPartial看起来像这样:

代码语言:javascript
运行
复制
<div class="details-form-field">
    <label class="col-sm-5">@Localizer.GetLocalizedString(nameof(Model.WorkingHoursCost))</label>
    <div class="input-container col-sm-7">
        <input id="Failure_WorkingHoursCost" asp-for="WorkingHoursCost" value="@Model.WorkingHoursCost" />
        <span asp-validation-for="WorkingHoursCost" class="text-danger"></span>
    </div>
</div>
<div class="details-form-field">
    <label class="col-sm-5">@Localizer.GetLocalizedString(nameof(Model.GeneralCost))</label>
    <div class="input-container col-sm-7">
        <input id="Failure_GeneralCost" asp-for="GeneralCost" value="@Model.GeneralCost" />
        <span asp-validation-for="GeneralCost" class="text-danger"></span>
    </div>
</div>
<div class="details-form-field">
    <label class="col-sm-5">@Localizer.GetLocalizedString(nameof(Model.TravelCost))</label>
    <div class="input-container col-sm-7">
        <input id="Failure_TravelCost" asp-for="TravelCost" value="@Model.TravelCost" />
        <span asp-validation-for="TravelCost" class="text-danger"></span>
    </div>
</div>
<div class="details-form-field">
    <label class="col-sm-5">@Localizer.GetLocalizedString(nameof(Model.TotalFailureCost))</label>
    <div class="input-container col-sm-7">
        <input disabled="disabled" id="Failure_TotalFailureCostField" asp-for="TotalFailureCost" value="@Model.TotalFailureCost" />
        <span asp-validation-for="TotalFailureCost" class="text-danger"></span>
    </div>
</div>

该部分的模型是:

代码语言:javascript
运行
复制
public class FailureCostEditViewModel
{
    public decimal WorkingHoursCost { get; set; }
    public decimal GeneralCost { get; set; }
    public decimal TravelCost { get; set; }
    public decimal TotalFailureCost { get; set; }
}

现在,当我在partial上设置输入值,并尝试将表单(从第一个视图)提交给控制器中的Update方法时:

我应该怎么做才能纠正字段model.CostEdit的partial回传数据?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-03-18 15:31:22

对于复杂类型的每个属性,模型绑定都会查找名称模式prefix.property_name的源代码。如果什么都没有找到,它只查找没有prefix.For的property_name。您的接收模型是一个嵌套模型,所以您需要前缀来区分属性。

尝试将名称添加到_FailureCostPartial.cshtml中的输入元素,如:name="CostEdit.WorkingHoursCost"

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/66686354

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档