2009-05-08 7 views
0

基本的には、フィルタリングの列にいくつかのラジオボタンがあります。たとえば、私が\ Catalog \ Flooring \ Harwoodセクションにいる場合、[Area Rugs]、[Carpet] & [Stone &タイル]のラジオボタンがあります。だから、ラジオボタンの下にタグを埋め込むのではなく、私がやりたいことは、JQueryイベントを起動して、サーバーに定期的なポストバックを行いたいと思います。 $ .post()はそれを行うべきだと思っていますが、正しく動作していません。JQuery - JQueryを使用してMVCコントローラアクションを発生させる最善の方法は何ですか?

PS:JSファイルにjquery-1.3.2-vsdoc.jsファイルを埋め込む/埋め込むために、完全なintellisenseを取得するにはどうすればよいですか?

+0

外部のjavascriptファイルの場合は、ファイルファイルの上部に次の行を含めてください: /// <リファレンスパス= "jquery-1.3.2-vsdoc.js" /> また、vsdocファイルをソリューションエクスプローラから編集ウィンドウにドラッグすると、Visual Studioがそれを並べ替えることができます。 –

答えて

0

初期化:でProductTypeラジオボタンイベントへ

$(document).ready(function() { 
    // Bind actions... 
    $("#Navigation li[title]").live("click", function(e) { e.preventDefault; this.blur(); return updateNavigation($(this).attr('title')); }); 
    $("#ItemsPerPage").change(function(e) { return updatePaging(); }); 

    $('input[name=ProductType]').click(function() { return updateRadio(); }); //{ $('form#typeForm').submit(); }); 
    $(":checkbox").change(function(e) { return updateCheck(); }); 
}); 

応答します。すべての

function updateRadio() { 
    var productGroup = $("#valProductGroup").attr('title'); 
    var productType = $("input:radio[checked]").val(); 
    var url = "/Catalog/" + productGroup + "/" + productType; 

    window.location = url; 
    return false; 
} 

感謝。

1

これはアップし、MVCコントローラのアクションを使用してダウン項目を移動するためのAJAX呼び出しです:

[ActionName("item-reorder")] 
    [AcceptVerbs(HttpVerbs.Post)] 
    public string ItemReorder(Guid id, string direction) 
    { 
     ReorderDirection dir = (ReorderDirection)Enum.Parse(typeof(ReorderDirection), direction, true); 
     int newSequence = this.WebServiceProxy.MoveItem(id, dir); 
     if (newSequence >= 0) 
      return ConfigurationManager.AppSettings["Ajax:Success"]; 
     else 
      return ConfigurationManager.AppSettings["Ajax:Fail"]; 
    } 

とJavaScript:

AjaxMoveItem: function(row, direction) { 
    //get the id from the attribute 
    var itemId = row.attr('itemId'); 
    //update server 
    $.ajax({ 
     type: 'POST', 
     url: '/item-reorder', 
     //data: ({ id: itemId, direction: direction }), //didn't work .. vars passed as null 
     data: ({ id: itemId, direction: direction }), 
     success: function(responseText) { 
      if (responseText == 'success') { 

       alert('moved'); 
      } else { 
       alert('error: ' + responseText); 
      } 
     }, 
     error: function() { 
      alert('unknown error'); 
     } 
    }); 
}, 
+0

非常にいいですし、後で別のページで使うかもしれません。今、私は非常に単純なGETやPOSTを実行して新しいページが表示されるようにしています。 –

+0

まあまあ、この例では、MVCアクションへの投稿のさまざまな側面を示しています。あなたの行動は、投稿された議論によってフィルタリングされたデータを元のビューに戻す必要があります。この例では、ラジオボタンのフィルタ値である方向と、ビューのHTMLであるresponseTextを考えてみましょう。 – misteraidan

0

あなたがGETを使用することができます - これは何でしょうカタログ/フロアリング/ Harwood/

$(function() { 
    $('input[type=radio]').click(function() { 
     location.href = '<%= Url.Action("Harwood", "Catalog/Flooring") %>' + '/' + $(this).val(); 
    }); 
}); 

<input type='radio' id='rugsRadio' name='typeRadio' value='AreaRugs' /> 
<input type='radio' id='carpetRadio' name='typeRadio' value='Carpet' /> 
... 

または、これは/ Catalog/Flooの投稿を行いますリングフォームパラメータとして選択typeRadioと/ハーウッド:

$(function() { 
    $('input[name=typeRadio]').click(function() { 
     $('form#typeForm').submit(); 
    }); 
}); 

<% using (Html.BeginForm("Flooring","Catalog", new { id = "Harwood" })) { %> 
    <input type='radio' id='rugsRadio' name='typeRadio' value='AreaRugs' /> 
    <input type='radio' id='carpetRadio' name='typeRadio' value='Carpet' /> 
    ... 
<% } %> 
+0

これはうまく見え、私はそれを自分の状況に適用する方法を理解しようとしています。 フロアリングは、多くのProductGroupsの1つです。 Hardwoodは、ProductGroupの子である多くのProductTypesの1つです。 ProductGroupを非表示のコントロールに格納し、RadioButton(選択)をターゲットProductTypeにします。 フォームに直接コード(2番目の例)を埋め込んでいるようです。これは正しいです? routes.MapRoute( "CatalogType"、 "カタログ/ {グループ}/{タイプ}"、= "カタログ" 新しい{コントローラ、アクション= "タイプ" 、基= "": –

+0

私のルートは次のように見えます 、type = ""} ); –

+0

どこからフォーム#typeFormを取得しますか? –

関連する問題