#asp.net-mvc #ajax
#asp.net-mvc #ajax
Вопрос:
Я должен отправить сложную строку через AJAX в ASP.NET С моей точки зрения, MVC относится к определенному действию контроллера.
Строка должна содержать всевозможные символы, такие как < , > , amp; , » , ‘ .
Я использую следующий код на javascript :
var запрос = new Sys.Net.WebRequest(); request.set_url("/Контроллер/Действие?Param=" str) ; // str - это строка, которая должна быть отправлена запрос.set_httpVerb("POST"); request.invoke();
Но когда я запускаю страницу, AJAX-запрос не достигает действия в контроллере.
Кто-нибудь может рассказать, как этого добиться?
Ответ №1:
используйте encodeURIComponent в str
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();
Ответ №2:
Я думаю, вы ищете Server.UrlEncode
. или просто encodeURI
/ encodeURIComponent
в javascript.
Закодируйте необработанные данные перед добавлением их к URL.
Ответ №3:
создайте свой метод удаления в global.asax следующим образом
routes.MapRoute("Delete", //Route name
"ControllerName/MethodName/{id}",
new { controller = "controller Name", action = "Method Name", id = 1 }
Ответ №4:
request.set_url("/Controller/Action?Param='" str "'" ) ;
Ответ №5:
Я бы порекомендовал вам jQuery. Microsoft AJAX похожа на stone age и полностью устарела в 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" />