0

私は Javascript yes no window で製品をお気に入りにしています。はいボタンをクリックすると、製品は私のお気に入りを取得し、背景ページを更新します。コントローラーに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> 

サイトのさまざまな場所 (詳細、インデックス、その他のビュー) で [お気に入りにする] リンクを使用 します。リンクをクリックすると、製品がお気に入りになり、ページが更新されますが、常に詳細ビューが開きます。コントローラーで変更ActionResultvoidましたが、開くことはありません。戻りビューがないためです。サイトの別のページで、[お気に入りにする]リンクをクリックすると、製品はお気に入りですが、背景ページは変更されません。現在のビューを維持します。(下手な英語でごめんなさい)

4

2 に答える 2

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>
于 2012-09-01T09:32:30.323 に答える
1

リロードする場合は値 (true) を渡し、そうでない場合は値 (false またはパラメーターなし) を渡します。

<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;
    }
}
于 2012-09-01T09:23:50.677 に答える