2016-06-21 20 views
-2

私はActionResultに値を渡したいが、値の型はguidなので、クエリーストリングとセッションを使いたくないので、URLに表示したくない。Jqueryを使用してTempdataに値を割り当てる方法は?

function ViewDetail(ele) { 
    var Id = $(ele).attr("OrderID"); 
    @TempData["OrderID"] = Id;  
} 
+4

(クライアント側では)できません。 'TempData'はサーバ側の値で、javascriptはクライアント側です。値をコントローラメソッドに投稿して値を設定するには、ajaxを使用する必要がありますが、それは意味をなさないでしょう。あなたは何を達成しようとしていますか? –

+1

guidをクエリ文字列に表示したくない特別な理由はありますか? – JamieD77

+2

まず、 'TempData' *はセッションです。それは同じことです。セッションを使用したくない場合は、このために 'TempData'を使いたくないでしょう。第2に、GUIDを公開したくない場合は、オーダーで他の一意の識別子を選択して代わりに使用します。しかしそれはあなたの唯一の選択です。特定の注文は一意のリソースであり、その一意のリソースを特定するには、URLにid * somewhere *のようなものが必要です。 –

答えて

1

基本的には、このようにすることはできません。サーバー側のオブジェクトをクライアント側のデータに割り当てようとしています。

あなたが行うことができますしかし、アヤックスを使用しているあなたはTempDataをにデータを割り当てるとAjax

0

Ajaxコードによって、クライアント側からのアクションを呼び出しますAjaxのアクション書く場合:

function ViewDetail(ele) { 
    var Id = $(ele).attr("OrderID"); 
    $.ajax({ 
        type: "POST", 
        cache: false, 
        async: false, 
        url: '@Url.Action("actionname", "controllername")', 
        dataType: "json", 
        data: { Id: Id }, 
        failure: function (jqXHR, exception) { 
         if (jqXHR.status === 0) { 
          alert('Not connect.\n Verify Network.'); 
         } else if (jqXHR.status == 404) { 
          alert('Requested page not found. [404]'); 
         } else if (jqXHR.status == 500) { 
          alert('Internal Server Error [500].'); 
         } else if (exception === 'parsererror') { 
          alert('Requested JSON parse failed.'); 
         } else if (exception === 'timeout') { 
          alert('Time out error.'); 
         } else if (exception === 'abort') { 
          alert('Ajax request aborted.'); 
         } else { 
          alert('Uncaught Error.\n' + jqXHR.responseText); 
         } 
        } 
       }); 
} 

希望を助けになる!

関連する問題