我有Get和Post部分操作。获取我在应用程序中拥有的图像列表。
[HttpGet]
public PartialViewResult ViewImageFileList()
{
IEnumerable<string> allImages = Directory.EnumerateFiles(Server.MapPath("~/Images/NBAlogoImg/"));
return PartialView(allImages);
}
发布删除的图片,我额外。
[HttpPost]
public PartialViewResult ViewImageFileList(string imageNameType)
{
var fileToDeletePath = Path.Combine(Server.MapPath("~/Images/NBAlogoImg/"), imageNameType);
if (System.IO.File.Exists(fileToDeletePath))
{
fileOperations.Delete(fileToDeletePath);
}
return PartialView();
}
我的部分视图的.chhtml
@model IEnumerable<string>
<div class="name-block-style">
Логотипы которые имеются
</div>
<div id=team-logo-wrapper-images>
<ul>
@foreach (var fullPath in Model)
{
var fileName = Path.GetFileName(fullPath);
<li>
<div class="box-name-image">
<p class="image-name-type">@fileName</p>
<img src="@Url.Content(string.Format("~/Images/NBAlogoImg/{0}", fileName))"
class="logo-images" alt="Логотип команды"
title="Логотип команды" />
</div>
</li>
}
</ul>
<div id="delete-image-form" class="form-group">
@using (Ajax.BeginForm(
"ViewImageFileList",
"Team",
new AjaxOptions() { HttpMethod = "POST", OnComplete = "reloadPage()" }))
{
<label>Введите имя с указание типа изображения</label>
<input type="text" class="form-group" name="imageNameType" id="imageNameType" />
<input type="submit" value="Удалить" class="btn btn-primary" />
}
</div>
<script>
function reloadPage() {
location.reload();
}
</script>
我的问题是在编写删除的图像并提交时使用空引用(我通过ajax完成)。我有此错误Null参考,但是单击以继续时,图像被删除,脚本重新加载页面。
我想了解为什么要使用null以及如何解决该问题,因为在删除图像时它总是会停止我的应用程序。
问题在于,在删除图像后进行POST时,您不会像在中正确执行的那样填充局部视图的模型ViewImageFileList
。当View Engine尝试构建您将在POST之后发送给客户端的视图时,如果尝试对foreach
null引用执行on时会得到null引用异常,则会产生这种结果。
就是说,您需要做的就是传递PartialView
所有图像。因此,只需return
在发布此操作方法的语句之前添加以下内容:
var allImages = Directory.EnumerateFiles(Server.MapPath("~/Images/NBAlogoImg/"));
return PatialView(allImages);
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句