В чем разница, если я верну некоторый JavaScript из моего контроллера MVC как либо
Содержание
[HttpPost]
public ActionResult MyEndPoint([System.Web.Http.FromBody] string result)
{
string jsResponse = "<script>";
if (result == "SUCCESS")
{
jsResponse = "SubmitOrder();";
}
else
{
jsResponse = "alert('Problem processing your order, please try again')";
}
jsResponse += "</script>";
return Content(jsResponse);
}
JavaScriptРезультат
[HttpPost]
public ActionResult MyEndPoint([System.Web.Http.FromBody] string result)
{
string jsResponse = "<script>";
if (result == "SUCCESS")
{
jsResponse = "SubmitOrder();";
}
else
{
jsResponse = "alert('Problem processing your order, please try again')";
}
jsResponse += "</script>";
return JavaScript(jsResponse);
}
Кроме того, существуют ли какие-либо меры предосторожности, о которых мне нужно знать при возврате JavaScript из метода/вызова контроллера MVC?



![Безумие обратных вызовов в javascript [JS]](https://i.imgur.com/WsjO6zJb.png)


Во-первых, JavaScriptResult возвращает ответ как application/javascript MIME-тип по сравнению со значением по умолчанию text/html, которое возвращает использование Content(). Из-за этого JavaScriptResult не будет делать то, что вы пытаетесь сделать (выполнение JS). Браузер не просто выполняет все, что отправлено в ответ. Поскольку Content() на самом деле отправляет HTML, браузер может отобразить его, в данном случае выполнив скрипт в теге script. Я не часто встречал JavaScriptResult, но там, где я встречал, он обычно используется для динамического обслуживания скриптов. Например:
Контроллер
public ActionResult SomeAction() {
...
return JavaScript("script content");
}
Вид
<script src = "MyController/SomeAction">
Что касается безопасности, вы, очевидно, захотите избежать выполнения всего, что было передано от пользователя, будь то из тела запроса, строки запроса и т. д. Держу пари, однако это немного проблема дизайна, и вы связываете ваш передний и задний конец, так что независимо от этого, вероятно, лучше использовать экономно.