2012-01-15 3 views
1

次のことが可能かどうか疑問に思っています。 MVCアプリケーション内MVCアプリケーションでセッション変数を設定してからasp.netポップアップを開きます

- (MVCアプリケーション内のasp.netのウェブフォームである)、いくつかの値についてデータベースを照会リンクがセッション変数としてこれらの値を設定し、ポップアップ・ウィンドウを開き

基本的にはCrystal Reportsを実行することができます。このリンクを使用すると、asp.net Webフォームでアクセス可能なセッション変数にレポートIDが設定されます。 私の混乱は、リンクをクリックしてポップアップを開くときのセッション変数の設定です。 できますか?その場合、リンクやポインタはありますか?

編集: Javascriptを

<script language="javascript" type="text/javascript"> 
    function flagInappropriate(postId) { 

     var url = "/Home/FlagAsInappropriate/" + postId; 

     $.post(url, function(data) { 
     if (data) { 
      alert("True") 

      } else { 
       // callback to show error/permission 
      } 
     }); 
    } 

コントローラ

namespace MvcApplication1.Controllers 
{ 
    [HandleError] 
    public class HomeController : Controller 
    { 

     [AcceptVerbs("POST")] 
     public bool FlagAsInappropriate(int id) 
     { 
      // check permission 
      bool allow = true; 

      // if allow then flag post 
      if (allow) 
      { 
       // flag post 

       return true; 
      } 
      else 
      { 
       return false; 
      } 
     } 





     public ActionResult Index() 
     { 
      ViewData["Message"] = "Welcome to ASP.NET MVC!"; 

      return View(); 
     } 

     public ActionResult About() 
     { 
      return View(); 
     } 
    } 
} 

答えて

2

それははい、行うことができます。私はレポートを生成する目的で似たようなことを達成しました(主に、レポートのURLがユーザーから隠されているため、一度オフのトークンを使用していくつかの追跡と認証を行うことができます)。私の解決策は以下の通りです:

  1. 関連するセッション変数を設定するには、アプリケーションでWebメソッドへのAJAX呼び出しを実行します。
  2. Webメソッドから値を返し、成功したかどうかを示します。
  3. AJAXコールの「成功」イベントハンドラについては、関連するASPXページを開いてレポートを生成します。

そのように単純です。 :)ここで

は、いくつかのサンプルコードは、あなたの改正の質問に基づいて、クリックイベントを添付して、AJAX呼び出しを行うことです。

<a href="#" id="ajaxTest-1" class="flag">Click to test AJAX call</a> 

<script type="text/javascript"> 
    $(document).ready(function() { 
     $(".flag").click(function() { 
      flagInappropriate($(this).attr("id").split("-")[1]); 
     }); 
    }); 

    function flagInappropriate(postId) { 
     var url = "/Home/FlagAsInappropriate/" + postId; 

     alert(url); 

     $.post(url, function (data) { 
      if (data) { 
       alert(data); 

      } else { 
       // callback to show error/permission 
      } 
     }); 
    } 
</script> 
+0

おかげで、私はさらにこれに見て、ここに例を発見しました。私はそれがアクションメソッドを呼び出すために得ることができないようだ。 http://stackoverflow.com/questions/764965/basic-ajax-example-with-asp-net-mvc/765974#765974 私のコントローラはレポートと呼ばれ、私のテストでは\ Reports \ FlagAsInappropriateを使用すると何もしません。何かが見つからない、あるいは間違った構文を使用していますか? – user1071017

+0

OK、すべての主旨、JavaScript/jQueryコードはあなたが呼んでいるように見えますか?あなたのコントローラーはどのように見えますか?デバッグを試してみましたが、AJAX呼び出し時にコントローラのブレークポイントに実際に達しているかどうかを確認しましたか? – FarligOpptreden

+0

こんにちは、はいコントローラにブレークポイントがあり、到達していません。私はこれを使って遊ぶために新しい空白のプロジェクトを始めました。 メインポストにコードを追加しました。 – user1071017

関連する問題