如何在不更改mvc3中的当前页面的情况下执行操作

时间:2012-09-01 08:50:27

标签: javascript jquery asp.net-mvc-3 javascript-events

我用javascript制作产品我的最爱是没有窗口。单击是按钮,产品获取我最喜欢的并刷新背景页面。我在控制器中有 MakeMyFavorite 操作,但每次调用都会返回相同的结果。

public ActionResult MakeMyFavorite( int id )
{
   ....
   return RedirectToAction( "Details", "Product", product );
}

和javascript:

<script language="JavaScript" type="text/javascript">
    function confirmFavorite() {
        if (confirm("Are you sure make favorite?")) {
            document.location.reload(true);
            return true;
        } else {
            return false;
        }
    } 
</script>

和链接:

<a href="@Html.Action ( "MakeMyFavorite", "Product", new { id = item.ID } )" 
     onclick = "return confirmFavorite()"> Make Favorite </a> 

我在网站的不同位置使用制作收藏链接(详细信息,索引和其他视图)。单击链接时,产品是收藏夹,页面刷新,但始终打开详细信息视图。 我在控制器中使用 void 更改了 ActionResult ,但从未打开过,因为没有返回视图。 我应该怎么做,在网站的不同页面,当我点击制作收藏链接时,产品是最喜欢的,但背景页面不会改变?保持目前的观点。 (抱歉英文不好)

2 个答案:

答案 0 :(得分:1)

当你想要重新加载时传入一个值(true),否则传递(false或没有param):

<a href="@Html.Action ( "MakeMyFavorite", "Product", new { id = item.ID } )" 
 onclick = "return confirmFavorite( true )"> Make Favorite </a>

<a href="@Html.Action ( "MakeMyFavorite", "Product", new { id = item.ID } )" 
 onclick = "return confirmFavorite( false )"> Make Favorite </a>

然后在js:

function confirmFavorite( reload ) {
    if (confirm("Are you sure make favorite?")) {
        if( reload ) {
            document.location.reload(true);
        }
        return true;
    } else {
        return false;
    }
}

答案 1 :(得分:1)

你可以这样做

制作JsonResult动作

喜欢

public JsonResult MakeMyFavorite(int id)
{
   ......
   string result = "favorite";
   return this.Json(result, JsonRequestBehavior.AllowGet);
}

制作像

这样的锚标记
<a href="#" id="myfav" onclick="confirmFavorite(@item.id);">Favorite</a>

和你的jquery处理这个

<script type="text/javascript">
    function confirmFavorite (id) {
        if(confirm("Are you sure make favorite?")) {
           var data = { "id": id };
           $.getJSON("/Product/MakeMyFavorite", data, function (data) {
               //check your data here what it is returning
               if($.trim(data)=="favorite")
               {
                //Do what you want to do.
               }
           });
        }
     }

</script>