0

テキストエリアの値とその他のパラメーターをアクション メソッドに渡したいと思いました。だから私は次のようにjqueryを使用しました。

意見:-

@Html.TextArea("aboutme")
<a id="@Profile.Id" title="@Profile.name" onclick="SubmitProfile(this)" >
 Submit</a>

Jquery メソッド:-

function SubmitReview(e,count) {    
    var Text = "'"+jQuery("#aboutme").val()+"'";
    var url = 'http://' + window.location.host + '/Controller/ActionMethod?' + 'id=' + e.id       + '&name=' + e.title + '&aboutme=' + Text;
    jQuery("#Profile").load(url);

}

アクション方法:-

public ActionResult ActionMethod(string id,string name,string aboutme)
        {
            //
        }

上記のコードは正常に動作していますが、パラメータ値のいずれかに スペースが含まれている場合は常に. Jquery メソッドでは URL は問題ないように見えますが、アクション メソッドでは値を最初のスペースまでトリミングし、残りのパラメータは null です。

いくつか例を挙げて説明しましょう

id='123',name='amith cho',aboutme='私はソフトウェアエンジニアです'

JqueryメソッドのURL

url='http://localhost/Controller/ActionMethod?id=123&name=amith cho ,aboutme=i am software engg'

しかし、それは次のようにアクションメソッドになっていますid=123 name=amith aboutme=null

これを解決するには?

4

1 に答える 1

3

クエリ パラメータとして渡す場合は、入力の値を URL エンコードする必要があります。

function SubmitReview(e,count) {
    var Text = jQuery("#aboutme").val(); // quotes aren't necessary
    var url = 'http://' + window.location.host + '/Controller/ActionMethod?' 
                   + 'id=' + e.id 
                   + '&name=' + encodeURIComponent(e.title) 
                   + '&aboutme=' + encodeURIComponent(Text); 
    jQuery("#Profile").load(url);

}

文字列にencodeURIComponentで処理されない余分な文字が含まれている場合は、MDN docsから参照されているこの関数を試すことができます。上記の encodeURIComponent への呼び出しを this への呼び出しに置き換えます。

function fixedEncodeURIComponent (str) {
  return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}
于 2012-11-09T07:23:05.680 に答える