首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >Razor生成错误的RenderPartial

Razor生成错误的RenderPartial
EN

Stack Overflow用户
提问于 2018-05-31 17:09:49
回答 1查看 45关注 0票数 -1

我有一个页面项目编辑与图像删除的多个部分呈现的形式。项目编辑页面:

代码语言:javascript
复制
@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

代码语言:javascript
复制
@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

代码语言:javascript
复制
<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。所以这是预料之中的,而且是正确的。

代码语言:javascript
复制
<img src="/Images/Get/10">

而这不是。使用项目Id而不是id (ItemImageViewModel.id)

代码语言:javascript
复制
action="/Images/Delete/5"

我不知道为什么@Model.Id会在同一个子视图上生成不同的ids。

Edit1:

代码语言:javascript
复制
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; }
}

我已经删除了不相关的字段。调试器显示正常

EN

回答 1

Stack Overflow用户

发布于 2018-05-31 18:28:06

现在,这段奇怪的代码生成了它应该生成的内容

代码语言:javascript
复制
<form action="@Url.Action("Delete", "Images", new { id = Model.Id })" method="post">
    <input type="hidden" id="Id" name="Id" value="@Html.DisplayFor(m => Model.Id)" />
    @Html.HiddenFor(m => Model.ItemId)"
    <img src="@Url.Action("Get", "Images", new { id = Model.Id })" />
    <input type="text" asp-for="@Model.Title" />
    <input type="submit" value="Delete" />
</form>


<form action="/Images/Delete/10" method="post" novalidate="novalidate">
    <input type="hidden" id="Id" name="Id" value="10">
    <input data-val="true" data-val-required="The ItemId field is required." id="ItemId" name="ItemId" type="hidden" value="5">"
    <img src="/Images/Get/10">
    <input type="text" id="Title" name="Title" value="Jacket">
    <input type="submit" value="Delete">
</form>

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/50620615

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档