![](/img/trans.png)
[英]How to pass a list of data from one partial view to another partial view, when both partial views are contained in a same parent view in ASP.NET MVC?
[英]ASP.NET MVC pass data from partial view
如何在ASP.NET MVC中的提交表单上从局部视图传递数据。
@using (Html.BeginForm("Edit", "BlogPost", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
................
@Html.Partial("PostImagesForPost",Model.PostImages)
}
PostImagesForPost-部分视图:
@model IEnumerable<Blog.Models.PostImage>
<script type="text/javascript" src="~/Scripts/jquery.zoom.min.js"></script>
<div>
@{
List<Blog.Models.PostImage> images = Model.ToList();
<ul class="images">
@foreach (var img in images)
{
string parameterValue_small = "~/BlogPhotos/120/" + img.Photo.ToString();
string parameterValue_big = "~/BlogPhotos/600/" + img.Photo.ToString();
<li>
<div id="jquery-image-zoom-example">
<span data-postid="@img.ID" data-delete="true" class="deletespan"></span>
<a href="@Url.Content(parameterValue_big)">
<img src="@Url.Content(parameterValue_small)" data-postid="@img.ID" class="zm" onclick="$('.jquery-image-zoom img').click()" />
</a>
<input type="checkbox" checked="checked" name="selectedImagesForDelete" style="display:none;" data-postid="@img.ID" value="@img.ID" />
</div>
</li>
}
</ul>
}
在Submit函数上,参数selectedImagesForDelete为null。
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Edit(Post post,string[] selectedImagesForDelete)
{...........}
这与您使用局部模型无关,而与MVC中的Modelbinder的工作原理有关。 对于可迭代的已过帐项目,模型联编程序期望使用ListProperty[index].ModelProperty
形式的字段名称。 问题是Html.*
系列帮助程序无法正确创建此名称,除非它们传递了索引值,而foreach
无法实现该索引值。 解决方案是简单地使用for
,而不是:
@for (var i = 0; i < images.Count(); i++)
{
Html.EditorFor(m => image[i].SomeProperty)
}
通过传入已索引的值( images[i]
),帮助程序将认识到它需要在名称中添加正确的已索引html前缀,以便Modelbinder在将值重新发布后将知道在哪里填充该值。
尽管就您而言,您似乎实际上只是手动为字段指定了HTML,这很好,但是此时您有责任正确设置名称值。
我相信您的name属性需要在名称中包含索引:
创建一个称为index的索引变量,并在每次迭代后将其递增
<input type="checkbox" name="selectedImagesForDelete[index]" value="2">
实际上,这是javascript文件的问题。 该复选框从未被选中。
<input type="checkbox" name="selectedImagesForDelete" value="@img.ID" />
但是我解决了这个问题,现在一切正常。
但是,感谢您尝试帮助我。 我很感激。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.