Как отправить сложную строку через AJAX - PullRequest
1 голос
/ 14 апреля 2011

Мне нужно отправить сложную строку через AJAX в ASP.NET MVC из моего представления конкретному действию контроллера.

Строка должна содержать всевозможные символы, такие как <,>, &, ", '.

Я использую следующий код в JavaScript:


var request = new Sys.Net.WebRequest();
request.set_url("/Controller/Action?Param=" + str) ; // str is the string to be sent
request.set_httpVerb("POST");
request.invoke();

Но когда я запускаю страницу, запрос AJAX не достигает действия в контроллере.

Может кто-нибудь сказать, как этого добиться?

Ответы [ 5 ]

1 голос
/ 12 сентября 2011

создайте свой метод удаления в global.asax следующим образом

routes.MapRoute("Delete", //Route name
                "ControllerName/MethodName/{id}",
                new { controller = "controller Name", action = "Method Name", id = 1 }
1 голос
/ 14 апреля 2011

использовать encodeURIComponent на стр

var request = new Sys.Net.WebRequest();
request.set_url("/Controller/Action?Param=" + encodeURIComponent(str)) ; // str is the string to be sent
request.set_httpVerb("POST");
request.invoke();
1 голос
/ 14 апреля 2011

Я думаю, что вы ищете Server.UrlEncode.или просто encodeURI / encodeURIComponent в javascript.

Кодировать необработанные данные перед добавлением их в URL.

0 голосов
/ 14 апреля 2011

Я бы порекомендовал вам JQuery.Microsoft AJAX похож на каменный век и полностью устарел в ASP.NET MVC.Я имею в виду, что если бы вы работали над устаревшим приложением ASP.NET WebForms, у вас был бы повод, но в ASP.NET MVC нет оправдания.Итак:

$.ajax({
    url: '<%= Url.Action("Action", "Controller")',
    type: 'POST',
    data: { Param: str },
    success: function(result) {
        // handle the success
    }
});

Также, если вам нужно отправить специальные символы, такие как <, >, ..., вы должны убедиться, что соответствующее действие контроллера отмечено атрибутом [ValidateInput(false)]:

[ValidateInput(false)]
public ActionResult Action(string Param)
{
    ...
}

, и если вы используете ASP.NET 4.0, вам также может понадобиться установить следующее в вашем файле web.config, чтобы это работало:

<httpRuntime requestValidationMode="2.0" />
0 голосов
/ 14 апреля 2011
request.set_url("/Controller/Action?Param='" + str+"'"+) ;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...