【发布时间】:2018-11-10 05:59:04
【问题描述】:
我有一个页面项目编辑,其中包含多个部分呈现的图像删除表单。项目编辑页面:
@model EditModel
<form method="post" enctype="multipart/form-data">
<input asp-for="ItemModel.Id" type="hidden" />
<input asp-for="ItemModel.AllOtherFields" type="hidden" />
</form>
@if (Model.ItemModel.ImageViewModels != null && Model.ItemModel.ImageViewModels.Any())
{
foreach(var imageViewModel in Model.ItemModel.ImageViewModels)
{
Html.RenderPartial("ItemImage/_itemImageEdit", imageViewModel);
}
}
ItemImage/_itemImageEdit
@model ViewModels.ItemImageViewModel
<form asp-controller="Images" asp-action="Delete" method="post">
<input type="hidden" asp-for="@Model.Id" />
<img src="@Url.Action("Get", "Images", new { id = Model.Id })" />
<input type="submit" value="Delete" />
</form>
这是我奇怪的最终 html
<form method="post" action="/Images/Delete/5" novalidate="novalidate">
<input type="hidden" data-val="true" data-val-required="The Id field is required." id="Id" name="Id" value="5">
<img src="/Images/Get/10">
<input type="submit" value="Delete">
</form>
其中 5 - 项目 ID 和 10 - 图像 ID。所以这是预期的和正确的
<img src="/Images/Get/10">
虽然不是这样。使用项目 ID 代替 id (ItemImageViewModel.id)
action="/Images/Delete/5"
我不知道为什么@Model.Id在同一个子视图上生成不同的ID。
编辑1:
public class ItemImageViewModel
{
[BindProperty]
public int Id { get; set; }
public string Title { get; set; }
public int ItemId { get; set; }
}
public class ItemViewModel
{
public ItemViewModel()
{
}
public ItemViewModel(ItemViewModel vm)
{
Id = vm.Id;
Title = vm.Title;
ImageViewModels = vm.ImageViewModels;
}
public int Id { get; set; }
public string Title { get; set; }
public IEnumerable<ItemImageViewModel> ImageViewModels { get; set; }
}
【问题讨论】:
-
显示您的模型定义。
-
@CodeCaster 更新
标签: razor asp.net-core