如何从局部视图ViewModel到主ViewModel中获取数据

时间:2019-04-26 16:26:05

标签: c# asp.net-mvc razor

我正在使用ASP.net MVC5创建POC应用程序。我想要一个顶级视图模型,其中包含部分视图中所有视图模型的数据。但是,当我提交表单时,它不会将模型中的数据传递到我曾期望但不想发生的顶层。

查看模型

openebs

表单提交功能

public class InvoiceViewModel
{
    public InvoiceInfo InvoiceInfo { get; set; }
}

public class InvoiceInfo
{
    [DisplayFormat(DataFormatString = "{0:dd/MM/yyyy}", ApplyFormatInEditMode = true)]
    public DateTime DateRaised { get; set; } = DateTime.Now;
    public int InvoiceNo { get; set; }
    public DateTime FromDate { get; set; }
    public DateTime ToDate { get; set; }
    public Currency InvoiceCurrency { get; set; }
}

使用'InvoiceViewModel'的主剃须刀视图

[HttpPost]
public ActionResult CreateInvoice(InvoiceInfo vm)
{
    if (ModelState.IsValid)
    {
        vm.FromDate = vm.ToDate;
    }

    return View(vm);
}

部分视图“ _InvoiceInfo”

@using (Html.BeginForm("CreateInvoice", "Invoice", FormMethod.Post))
{
    @Html.AntiForgeryToken()

    <div class="form-horizontal">
        <hr />
        @Html.Partial("_InvoiceInfo", Model.InvoiceInfo)

        <div class="form-group">
            <div class="col-md-offset-2 col-md-10">
                <input type="submit" value="Create" class="btn btn-default" />
            </div>
        </div>
    </div>
}

因此,当我单击“提交”时,我希望InvoiceInfo对象与所有相关数据一起位于InvoiceViewModel对象内。这可能无法实现,但会有所帮助。

1 个答案:

答案 0 :(得分:0)

更容易完成InvoiceInfo : InvoiceViewModel。 以这种方式使用剃刀@model InvoiceViewModel,您可以同时拥有两个模型的所有属性。