Potrzebuję jednej akcji, zwróć fragment kodu JavaScript.Jak zwrócić skrypt JavaScript z akcji kontrolera ASP.NET 5 MVC 6
W MVC 5 mamy:
return JavaScript("alert('hello')");
ale w MVC 6 my Do not.
Czy istnieje sposób, aby to zrobić teraz?
Potrzebuję jednej akcji, zwróć fragment kodu JavaScript.Jak zwrócić skrypt JavaScript z akcji kontrolera ASP.NET 5 MVC 6
W MVC 5 mamy:
return JavaScript("alert('hello')");
ale w MVC 6 my Do not.
Czy istnieje sposób, aby to zrobić teraz?
ten może być osiągnięty przez powrót ContentResult MSDN
return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>");
lub w inny sposób byłoby korzystające z AJAX
return json(new {message="hello"});
$.ajax({
url: URL,
type: "POST",
success: function(data){alert(data.message)},
});
Czy możesz dołączyć wyjaśnienie również. Odpowiedzi tylko na kod są zazwyczaj mile widziane, ponieważ brak im uzasadnienia. Być może zawiera link do MSDN lub coś, co odwołuje się do treści? –
Pierwsza opcja nie działa z mvc 6. Nic w ogóle się nie dzieje. – Beetlejuice
Czy możesz dodać więcej do swojego kodu, zamiast prostej deklaracji zwrotu, strony klienta, kodu kontrolera. Wolałbym jednak drugą opcję. – din
Obecnie ASP.NET MVC 6 nie obsługuje JavaScriptResult
jak w MVC 5. Ciekawą dyskusję na ten temat można znaleźć tutaj (są też rozwiązania dla twojego problemu): https://github.com/aspnet/Mvc/issues/2953
Osobiście uważam, że wysyłanie kodu JS do klienta jest złe (wyślij klientowi dane, które JS potrzebuje, a następnie wykonaj wywołania funkcji), ale wygląda na to, że istnieje ku temu sytuacja (spójrz na ostatni komentarz).
To będzie wyzwanie dla mojego prawdziwego projektu. Ale spróbuję. – Beetlejuice
Wysyłanie ??? Nie! Należy go używać do udostępniania dynamicznie tworzenia JS przy użyciu punktu końcowego witryny. Na przykład dla dynamicznie tworzonych stałych. – Maxim
Myślę, że możemy implemetować JavaScriptResult, ponieważ nie jest on oficjalnie obsługiwany. To proste:
public class JavaScriptResult : ContentResult
{
public JavaScriptResult(string script)
{
this.Content = script;
this.ContentType = "application/javascript";
}
}
powrót Zawartość (""); – din
@din Dlaczego nie zamieścisz go jako odpowiedzi? – Christos
@ Christos, jak chcesz :-) – din