0

我想将 textarea 值和其他一些参数传递给操作方法。所以我确实以下列方式使用了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 看起来不错。但在 action 方法中,它将值修剪到第一个空格,其余参数为空。

让我用一些例子来解释

假设 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 文档。将上面对 encodeURIComponent 的调用替换为对 this 的调用。

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