简体   繁体   English

ASP.NET 核心 Razor 使用属性作为后表单的基础

[英]ASP.NET Core Razor using property as base for post form

@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>

As you can see, i am sending Tuple<ApplicationsModel, AR.WebShop.Product<AR.TDShop.ProductCustomProperties>> as my model but for my form i use only Item2 .如您所见,我将Tuple<ApplicationsModel, AR.WebShop.Product<AR.TDShop.ProductCustomProperties>>作为我的 model 发送,但对于我的表单,我只使用Item2 Problem is my inputs are named Item2.ID, Item2.Rel etc. and when i try to catch my object inside post with this: public IActionResult AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product) it is not valid, but if that first part Item2 is removed, then it would work.问题是我的inputs被命名为Item2.ID, Item2.Rel etc. ,当我尝试在帖子中捕获我的 object 时: public IActionResult AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product)它无效,但如果第一部分Item2被删除,那么它会起作用。

Is there a way to remove it inside razor?有没有办法在 razor 中将其移除?

EDIT I have tried adding this:编辑我试过添加这个:

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

and using it like this:并像这样使用它:

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

but it names it p.ID instead of ID但它将其命名为p.ID而不是ID

Found solution and discovered one more brilliant thing.找到解决方案并发现了一件更精彩的事情。

First of all my own answer from edit worked but all i needed to do was change my HttpPost method from AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product to AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p (same as i called it inside my View.首先,我自己的编辑答案有效,但我需要做的就是将我的HttpPost方法从AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product更改为AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p (就像我在我的视图中调用它一样。

What i discovered is instead of calling each property like this all i had to do is call it like @Html.EditorFor(x => pr) and it would list all properties!我发现不是像这样调用每个属性,我所要做的就是像@Html.EditorFor(x => pr)那样调用它,它会列出所有属性!

So my full working code now looks like this:所以我的完整工作代码现在看起来像这样:

@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>

and catching it with AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p并用AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> p

So clean:')好干净:')

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM