c# - 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
解决方案
找到解决方案并发现了一件更精彩的事情。
首先,我自己的编辑答案有效,但我需要做的就是将我的HttpPost
方法从更改AddNewProduct(AR.WebShop.Product<AR.TDShop.ProductCustomProperties> product
为AddNewProduct(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
好干净:')
推荐阅读
- javascript - 发送电子邮件的通知消息
- azure - Azure 数据工厂与 Azure 逻辑应用
- python - 在推理时启用 dropout 并禁用 BatchNormalization
- r - R Shiny 以交互方式选择变量来执行计算
- javascript - 如何在反应中测试以req为参数的导出函数
- firebase - 云功能无日志记录
- shopware - 如何将自定义地址字段添加到结帐页面?
- java - 如何将 docker 卷映射到 EC2 主机文件系统
- javascript - 使用 Webpack 5 构建 ES 模块包,并在 Node.js ES 模块中使用该包
- python - Sklearn Cross 使用 SVC 模型验证返回的 NaN