首页 > 解决方案 > ASP.NET Core Razor 使用属性作为发布表单的基础

问题描述

@model Tuple<ApplicationsModel, AR.WebShop.Product<AR.TDShop.ProductCustomProperties>>

<div style="padding: 20px">
    <form method="post" action="/TDShop/AddNewProduct">
        @Html.EditorFor(x => x.Item2.ID);
        @Html.EditorFor(x => x.Item2.Rel);
        @Html.EditorFor(x => x.Item2.CatalogueID);
        @Html.EditorFor(x => x.Item2.Name);
        @Html.EditorFor(x => x.Item2.Thumbnail);
        @Html.EditorFor(x => x.Item2.SubGroupID);
        @Html.EditorFor(x => x.Item2.Unit);
        @Html.EditorFor(x => x.Item2.Active);
        @Html.EditorFor(x => x.Item2.VAT);
        @Html.EditorFor(x => x.Item2.DisplayIndex);
        @Html.EditorFor(x => x.Item2.ShortDescription);
        @Html.EditorFor(x => x.Item2.LongDescription);
        @Html.EditorFor(x => x.Item2.Sale);
        @Html.EditorFor(x => x.Item2.Keywords);
        @Html.EditorFor(x => x.Item2.Price);
        @Html.EditorFor(x => x.Item2.PurchasePrice);
        @Html.EditorFor(x => x.Item2.Tag.Klasifikacija);
        @Html.EditorFor(x => x.Item2.Tag.TransportnoPakovanje);
        @Html.EditorFor(x => x.Item2.Tag.TransportnoPakovanjeJM);
        @Html.EditorFor(x => x.Item2.Tag.KupovinaSamoUTransportnomPakovanju);
        @Html.EditorFor(x => x.Item2.Tag.PovezaniProizvod);
        <button>Create</button>
    </form>
</div>

如您所见,我Tuple<ApplicationsModel, AR.WebShop.Product<AR.TDShop.ProductCustomProperties>>作为我的模型发送,但对于我的表单,我只使用Item2. 问题是我inputs的名字Item2.ID, Item2.Rel etc.,当我尝试在帖子中捕获我的对象时:public IActionResult AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product)它无效,但如果第一部分Item2被删除,那么它会起作用。

有没有办法在剃须刀内去除它?

编辑 我试过添加这个:

@{ 
    AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p = Mode.item2;
}

并像这样使用它:

@Html.EditorFor(x => p.ID)

但它命名它p.ID而不是ID

标签: c#asp.netasp.net-corerazor

解决方案


找到解决方案并发现了一件更精彩的事情。

首先,我自己的编辑答案有效,但我需要做的就是将我的HttpPost方法从更改AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> productAddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p(与我在 View.xml 中调用它的方法相同)。

我发现不是像这样调用每个属性,我所要做的就是像这样调用它@Html.EditorFor(x => pr),它会列出所有属性!

所以我的完整工作代码现在看起来像这样:

@model Tuple<ApplicationsModel, AR.WebShop.Product<AR.TDShop.ProductCustomProperties>>
@AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p = Model.Item2;

<div style="padding: 20px">
    <form method="post" action="/TDShop/AddNewProduct">
        @Html.EditorFor(x => p)
        <button>Create</button>
    </form>
</div>

并抓住它AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p

好干净:')


推荐阅读