День добрый!
Передаю через $get запрос на контроллер, в нем есть QueryStringParameter с кириллицей.
Action принимает мои параметры, но кириллицу не может правильно декодировать. Причем, это проблема только в IE11, в Mozilla все работает.
Чего только не пробовал, кодировал эти символы на стороне контроллера в 1251, UTF-8 и прочие.. Так и не получил нормальный русский текст. Пробовал еще через Url.Decode.
public ActionResult AddNewCom(string idEvent, string Com, string RouteC, string Aut, string Actions)
Url:
/PCMS/AddNewCom?idEvent=b282c0fb-0092-4ef2-8f43-2e397d7551e0&Com=23&RouteC=%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd+%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd+%ef%bf%bd+%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd%ef%bf%bd&Aut=112&Actions=134"
Проблема с параметром RouteC. На стороне JavaScriptа ссылка на метод формируется корректно, с русскими символами. Но на стороне сервера не раскодируется назад.
JS:
var tex = "@Html.Raw(Url.Action("AddNewCom", "PCMS", new { idEvent = "guid", Com="comm", RouteC="routecrit", Aut="authorname", Actions="acts" }))";
var obj = $('#ddlCriteria').data("ejDropDownList");
tex = tex.replace("comm", $("#RTEComment").val());
tex = tex.replace("routecrit", obj.option("text"));
tex = tex.replace("authorname", $("#RTEAuthor").val());
tex = tex.replace("acts", $("#RTEActions").val());
tex = tex.replace("guid", selectedEventID);
$.get(tex, function (rawData) {
});
Перед вставкой в URL строковых значений надо их url-кодировать. Браузер, конечно, может и сам попытаться это сделать... но не факт что у него получится то, что вы от него ожидаете.
Делается это функцией encodeURIComponent:
tex = tex.replace("routecrit", encodeURIComponent(obj.option("text")));
Но, вообще говоря, JQuery предоставляет и более простые способы формирования запросов. Например, можно сделать так:
$.get("/PCMS/AddNewCom", {
idEvent: selectedEventID,
Com: $("#RTEComment").val(),
RouteC: obj.option("text"),
Aut: $("#RTEAuthor").val(),
Actions: $("#RTEActions").val(),
}, function (rawData) {
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости