ユーザーがMVC
画像をアップロードできるアプリケーションがあります。これは としてデータベースに保存されていますvarbinary(max)
。現在、画像を削除することはできません。ユーザーは新しいもののみをアップロードできます。
ボタンを押してもページにとどまっているときにnull
、関数で画像を設定または削除するにはどうすればよいですか?jquery
[編集] クライアント側の画像を削除したいのですが、ページがコントローラーに戻されると、画像の値を読み取ることができます。そして、データベースへの余分な呼び出しを行わずに、他のすべてを保存します。
[Edit2] これはコントローラーです:
public ActionResult Edit(int id)
{
var item = repository.GetItem(id);
string base64 = null;
if (item.Image != null)
{
using (var ms = new MemoryStream(item.Image.ToArray()))
{
base64 = Convert.ToBase64String(ms.ToArray());
}
}
ViewData["Image"] = !String.IsNullOrEmpty(base64) ? String.Format("data:image/png;base64, {0}", base64) : String.Empty;
return View(item);
}
これはビューの一部です:
@Html.LabelFor(model => model.Item.Image)
@if (@Model.Item.Image != null)
{
<img src="@ViewData["Image"]" id="removeImage" />
@Html.ValidationMessage("Image")
@Html.ActionLink("delete", null, null, new { id = "deleteImage" })
}
<input type="file" name="file" id="file" />
ActionLink
これは、クリックされたときに画像を非表示にするスクリプトです。
<script type="text/javascript" lang="javascript">
$(document).ready(function () {
$('#deleteImage').click(function () {
$('#removeImage').hide();
return false;
});
});
</script>
がActionLink
押されると、画像はjquery関数で非表示に設定されています。そして、このフォームをサーバーに投稿すると、画像はnull
. 問題は、なぜこれが機能するのかということです。