javascript関数onclickを呼び出す削除ボタンがあります。 関数の機能が起動し、IDを取得してアラートに表示され、使用を試みます。window.location.href = "/ Home/DeletePhoto/photoId =" + id; HomeControllerでActionResultを呼び出す。モーダルポップアップでwindow.location.hrefを取得してActionResultを呼び出そうとしています。 MVC + Javascript
ボタン:
<button class="title" id="btnDelete" onclick="fDoTheDelete();">Delete</button>
ビューの下部にあるjavascript関数:私はCtrl + javascriptのコードで以下のURLをクリックした場合、それが実行
function fDoTheDelete()
{
alert("in the delete function: " + document.getElementById('h3Title').innerHTML);
var id = document.getElementById('h3Title').innerHTML;
window.location.href = "http://localhost:50061/Home/DeletePhoto/photoId=" + id;
}
(必要なActionResult)
window.location.href = "http://localhost:50061/Home/DeletePhoto/photoId=" + id;
ここにActionResultがあります。私は写真を削除したいと思うし、それは記録され、削除されていない写真を表示するホーム/インデックスにリダイレクトする。ボタンのクリックで
public ActionResult DeletePhoto(int photoId)
{
//GET FILENAME FROM ID
string photoName = (from p in db.Photos
where p.PhotoId == photoId
select p.Description).FirstOrDefault();
//DELETE FILE
string fullPath = "/GalleryImages /" + photoName;
if (System.IO.File.Exists(fullPath))
{
System.IO.File.Delete(fullPath);
}
//DELETE RECORD OF PHOTO
Photo photo = db.Photos.Find(photoId);
db.Photos.Remove(photo);
db.SaveChanges();
return RedirectToAction("Index");
}
、アラートは、私はjavascript関数内だということを示し、idが渡されましたが、写真モーダルウィンドウがちょうどまだ存在している画像のサムネイルを示す同じ指数を閉じて表示されます。
EDIT: 私は設定が非常に簡単だったが、それは難しいサムネイル/インデックス表示とモーダルライトボックスのポップアップとの間の追加のものを渡すために作られたThis image galleryを使用していた情報を編集して追加することが戻ってきました。そのため、私はActionResultへの簡単な呼び出しで大きな問題を抱えています。ハッキングするのが難しいjs/jquery/blueimpコードがたくさんあります。 私を助けようと努力してくれた皆様に感謝し、他の誰かがイメージギャラリーを使用してもらいたいと願っています。
'h3Title'要素に空白がありますか?それを削除するには 'document.getElementById( 'h3Title')。innerHTML.trim()'を使用してください。 – Barmar
クライアントコードとサーバーコードを混在させることは悪いです。たとえば、js関数を呼び出してページの場所を変更することが強制されますが、サーバーも新しいページを強制するので、混合技術は非常に悪いです。公式の文書 –
@Barmarでは、それはあなたの提案を使ってトリミングされますが、それでも失敗します。 – JustJohn