2011-07-21 9 views
3

2つの文字列パラメータと2つの日付値を受け取るビューがあります。ユーザーが検索ボタンを押すと、フィルタリングされた出力が画面に表示されます。これは、ユーザーがスペースを含む文字列を入力するまで完全にうまく動作します。つまり、「廃棄物」を検索することはできますが、「廃油」は検索できません。コントローラのJQUERY呼び出しアクション:文字列 'スペース'文字を含む場合に切り捨てられるパラメータ

興味深いことに、後者の場合、呼び出しが行われる前にパラメータがJavascriptからokです。しかし、コントローラのコードに入ると、クライアント上の「廃油」という形で「無駄」になります。これが起こると、他のパラメータがNULLに設定され、システムがクラッシュします。

私は空白文字を '#'文字で置き換えようとしましたが、その後、コントローラー側の「 '」文字を取り除いて戻しました。これは面倒なファッジであり、1つのパラメータでしか動作しないように見えます。

このパラメータのデータ損失のために簡単に説明、多くの

ない

に感謝のコメントが存在しなければならないのコード例が必要とされているが、ここでそれが役立つならば、それはとにかくであることを確認してください:

私のコントローラヘッダー:

public ActionResult IndexSearch(int? page, string searchText,string searchTextSite,string StartDate,string EndDate) 
    { 

マイHTML Javascriptを:

function Search(sSearchText,sSite) { 
     sSearchText = sSearchText.toString().replace(" ", "#"); 
     sSite = sSite.toString().replace(" ", "#"); 
     debugger; 
     alert($("#AbsolutePath").val() + "Waste.mvc/IndexSearch?searchText=" + sSearchText + "&searchTextSite=" + sSite + "&StartDate=" + $('#StartDate').val() + "&EndDate=" + $('#EndDate').val()); 
     $("#ResultsList").load($("#AbsolutePath").val() + "Waste.mvc/IndexSearch?searchText=" + sSearchText + "&searchTextSite=" + sSite + "&StartDate=" + $('#StartDate').val() + "&EndDate=" + $('#EndDate').val(), 
      function() { 
       $('#LoadingGif').empty(); 
      }); 

     $('#LoadingGif').empty().html('<img src="' + $("#AbsolutePath").val() + 'Content/images/ajax-loader.gif" alt="Loading image" />'); 
    } 

答えて

4

ヨURLを構築する際に文字列の連結を使用しているため、AJAXリクエストを送信するときに、あなたのパラメータをURLエンコードしているわけではありません。

var url = $('#AbsolutePath').val() + 'Waste.mvc/IndexSearch'; 

var data = { 
    searchText: sSearchText, 
    searchTextSite: sSite , 
    StartDate: $('#StartDate').val(), 
    EndDate: $('#EndDate').val() 
}; 

$('#ResultsList').load(url, data, function() { 
    $('#LoadingGif').empty(); 
}); 

ここで正しい値を取得するために、次の手法を使用することができます。

+0

ファンタスティック、それは上のスポットでした:-) – John

+0

これも私を助けました - ありがとう! – Jen