この質問はSOで何度も対処されていることを知っていますが、私の人生ではそれを機能させることができず、提案された解決策のどれも私の問題を解決していません。ここにシナリオがあります。ユーザーがデータを入力して画像をアップロードするメインフォームがあります。アップロードは ajax 経由で (valum のファイル アップローダーを使用して) 行われるため、ファイルがアップロードされるとすぐにコントローラーにポストされます。次に、画像サーバー側のサイズを変更し、部分ビュー内に含まれるサムネイルを返します。部分ビューは、ユーザーが詳細を入力するのと同じビューにあります。これは最初はすべて問題なく機能し、ファイルがサーバーに送信され、サムネイルが生成されて部分ビューに返されますが、これは発生していません2回目。これがメインフォームです。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
、2 回目のアクションの呼び出しに失敗しています。時間が更新されているので、GetThumbnail
アクションが呼び出されたことはわかっていますが、画像は2回目にアクションを思い出していませんGenerateThumbnail
。どうすればこれを解決できますか? 部分ビュー内のアクションから画像をレンダリングするより良い方法はありますか?
どんな助けでも大歓迎です。