我想将textarea值和一些其他参数传递给action方法。所以我用以下方式使用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方法中,它将值修剪到第1个空格,其余参数为null。
让我用一些例子来解释
让我们说id ='123',name ='amith cho',aboutme ='我是软件engg'
Jquery方法中的Url
url='http://localhost/Controller/ActionMethod?id=123&name=amith cho ,aboutme=i am software engg'
但它正在采取行动方式id=123
name=amith
aboutme=null
如何解决这个问题?
答案 0 :(得分: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的调用。
function fixedEncodeURIComponent (str) {
return encodeURIComponent(str).replace(/[!'()]/g, escape).replace(/\*/g, "%2A");
}