我知道这个问题已经在 SO 上解决了很多次,但是在我的一生中我无法让它发挥作用,所提出的解决方案都没有为我解决问题。所以这是场景,我有一个主窗体,用户输入一些数据并上传图片。上传是通过 ajax 进行的(使用 valum 的文件上传器),因此文件在上传后立即发布到控制器,然后我调整图片服务器端的大小并返回包含在部分视图中的缩略图。局部视图与用户在其中输入详细信息的视图位于同一视图上。这一切都在第一次工作得很好,文件被发送到服务器并生成缩略图并返回到局部视图,但这并没有发生第二次。这是主要形式,ThumbnailDiv
):
@using (Html.BeginForm("Upload","Home", FormMethod.Post))
{
@Html.ValidationSummary(true)
<fieldset >
//Some input fields
//Uploader
<div id="file-uploader">
<noscript>
<p>Please enable JavaScript to use file uploader.</p>
</noscript>
</div>
</fieldset>
}
<input type="submit" value="View thumbnail" id="btnGetThumbnail" />
<div id="ThumbnailDiv" style="float: right;width: 500px; height: 500px;">
</div>
<script type="text/javascript">
$(document).ready(function () {
$("#btnGetThumbnail").click(function (e) {
e.preventDefault();
var myDiv = $('#ThumbnailDiv');
$.ajax({
url: '@Url.Action("GetThumbnail", "Home")',
type: 'GET',
cache: false,
success: function (result) {
myDiv.html(result);
}
});
});
});
</script>
这是GetThumbnail
Home 控制器上的操作:
[OutputCache(NoStore = true, Duration = 0, VaryByParam = "*")]
public ActionResult GetThumbnail()
{
ViewBag.TheTime = System.DateTime.Now.ToString();
return PartialView("~/Views/Home/ThumbnailFinal.cshtml",mvm);
}
我将当前时间传递给局部视图以检查请求是否正在更新,它们是,但是我似乎无法告诉视图重新渲染缩略图。这是局部视图 ( ThumbnailFinal.cshmtl
):
@ViewBag.TheTime
<img src="@Url.Action("GenerateThumbnail")" alt="" />
问题:
图像未刷新,并且GenerateThumbnail
第二次调用该操作失败。时间正在更新,所以我知道该GetThumbnail
动作被调用,但是图像没有GenerateThumbnail
第二次调用该动作。我将如何解决这个问题?有没有更好的方法从局部视图中的动作渲染图像?
任何帮助将不胜感激。