特殊字符没有传递给控制器​​动作?我怎样才能逃脱特殊角色?

时间:2011-11-15 06:29:48

标签: asp.net-mvc-3 c#-3.0 special-characters

我将带有特殊字符的字符串传递给asp.net mvc3中的控制器操作。在行动中,它将字符串数据作为null。

var url = '@Url.Action("SetData", "Home")';
var data = { Text: a, Data: urlData };
               $.post(url, data, function (result) {
                });

控制器行动:

 public ActionResult SetData(string Text, string Data)
        {
        }

我的字符串数据是:

Content Belongs To Tseries and Eros Entertainment Song : Tum Ho Movie : Rockstar Singer : Mohit Chauhan & Suzzane D' Mello Music By : AR Rahman Rockstar is a

如何传递具有特殊字符的字符串?

2 个答案:

答案 0 :(得分:1)

urlData变量包含HTML编码实体。您需要先对其进行HTML解码,如下所示:

var data = {
    text: 'some text',
    data: $('<div/>').html(urlData).text()
};

或者可能会改变您检索此变量内容的方式。我认为这是你的问题所在。

或在服务器端,如果您愿意(建议使用第一个解决方案):

public ActionResult SetData(string text, string data)
{
    var decodedData = Server.HtmlDecode(data);
    ...
}

答案 1 :(得分:0)

当您将字符串数据放在像这样的数据对象中时,可以使用javascript函数转义

var data = { Text: a, Data: escape(urlData) }