试图获取window.location.href来调用ActionResult。 MVC + Javascript

时间:2017-03-25 07:38:12

标签: javascript html

我有一个删除按钮,可以调用javascript函数onclick。 函数函数触发,获取id并显示在Alert中,尝试使用window.location.href =" / Home / DeletePhoto / photoId =" + id;在HomeController中调用ActionResult。

模态弹出窗口中的

按钮:

 <button class="title" id="btnDelete" onclick="fDoTheDelete();">Delete</button>

视图底部的javascript函数:

   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;
    }

(如果我在javascript代码中按Ctrl +单击下面的URL,它会根据需要运行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,但是照片模态窗口刚刚关闭并显示相同的索引,显示图像的缩略图仍然存在。

修改 我回来编辑并添加我正在使用This image gallery的信息,这些信息非常容易配置,但很难在缩略图/索引显示和模态灯箱弹出之间传递更多内容。这就是为什么我对ActionResult的简单调用遇到了很多麻烦。有很多js / jquery / blueimp代码很难被破解。 感谢所有努力帮助我的人,我希望其他人也可以使用图片库。

2 个答案:

答案 0 :(得分:0)

您的代码可能无法在服务器端抓住<{1}}

上的删除ID

根据此answer,要求服务器删除特定资源,您的路由应该像public ActionResult DeletePhoto(int photoId)一样处理。

应该像
一样调用 /Home/DeletePhoto/{photoId}

答案 1 :(得分:0)

首先,你应该在Razor中使用url.action而不是硬编码。你将不再有路由问题了。

@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })

见这里:Url.Action parameters?

然后在js中使用一个方法,比如.assign(&#34; url&#34;)。

    window.location.assign("
@Url.Action("Information", "Admin", new { id = UrlParameter.Optional })"
)