【问题标题】:ASP.NET Core Razor using property as base for post formASP.NET Core Razor 使用属性作为发布表单的基础
【发布时间】:2020-06-23 15:54:41
【问题描述】:
@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&lt;ApplicationsModel, AR.WebShop.Product&lt;AR.TDShop.ProductCustomProperties&gt;&gt; 作为我的模型,但对于我的表单,我只使用 Item2。问题是我的inputs 被命名为Item2.ID, Item2.Rel etc. 并且当我尝试在帖子中捕获我的对象时:public IActionResult AddNewProduct(AR.WebShop.Product&lt;AR.TDShop.ProductCustomProperties&gt; product) 它是无效的,但如果第一部分Item2 被删除,那么它会起作用。

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

编辑 我试过添加这个:

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

并像这样使用它:

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

但它将其命名为 p.ID 而不是 ID

【问题讨论】:

    标签: c# asp.net asp.net-core razor


    【解决方案1】:

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

    首先我自己的编辑回答有效,但我需要做的就是将我的 HttpPost 方法从 AddNewProduct(AR.WebShop.Product&lt;AR.TDShop.ProductCustomProperties&gt; product 更改为 AddNewProduct(AR.WebShop.Product&lt;AR.TDShop.ProductCustomProperties&gt; p(就像我在视图中调用它一样。

    我发现不是像这样调用每个属性,我所要做的就是像 @Html.EditorFor(x =&gt; 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&lt;AR.TDShop.ProductCustomProperties&gt; p捕捉它

    很干净:')

    【讨论】:

      猜你喜欢
      • 2020-05-26
      • 2019-05-10
      • 2020-09-27
      • 1970-01-01
      • 2022-12-08
      • 1970-01-01
      • 1970-01-01
      • 2018-10-08
      • 1970-01-01
      相关资源
      最近更新 更多