2015-09-18 14 views

Odpowiedz

8

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)},  
    }); 
+0

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? –

+0

Pierwsza opcja nie działa z mvc 6. Nic w ogóle się nie dzieje. – Beetlejuice

+0

Czy możesz dodać więcej do swojego kodu, zamiast prostej deklaracji zwrotu, strony klienta, kodu kontrolera. Wolałbym jednak drugą opcję. – din

0

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).

+0

To będzie wyzwanie dla mojego prawdziwego projektu. Ale spróbuję. – Beetlejuice

+1

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

2

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"; 
    } 
} 
Powiązane problemy