2015-09-18 22 views
5

1つのアクションが必要JavaScriptの一部を返します。 MVC 5ではASP.NET 5 MVC 6コントローラからJavascriptを返す方法

我々は持っている:

return JavaScript("alert('hello')"); 

が、MVC 6に、私たちはドント。

これを行う方法はありますか?

+0

リターンのコンテンツ( "<スクリプト言語= 'javascriptの' タイプ= 'テキスト/ javascriptの'>警告(); 'こんにちは、世界!'"); – din

+0

@dinなぜあなたはそれを回答として投稿しないのですか? – Christos

+0

あなたが望むように@Christos :-) – din

答えて

8

これは現在、ASP.NET MVC 6は、MVCのようJavaScriptResultをサポートしていません

return json(new {message="hello"}); 

$.ajax({ 
     url: URL, 
     type: "POST", 
     success: function(data){alert(data.message)},  
    }); 
+0

このことについても説明してください。コードのみの回答は、推論が欠けているため、通常は眉をひそめます。おそらく、MSDNやContentを参照するものへのリンクが含まれていますか? –

+0

最初のオプションはmvc 6では機能しません。何も起こりません。 – Beetlejuice

+0

単純な返信文、クライアント側、コントローラコードではなく、コードに多くを追加できますか?私は2番目のオプションを好むだろう。 – din

0

Ajaxを利用したことになるContentResult MSDN

return Content("<script language='javascript' type='text/javascript'>alert('Hello world!');</script>"); 

または他の方法を返すことによって達成することができます5.これに関する興味深い議論がここにあります(あなたの問題についても解決策があります):https://github.com/aspnet/Mvc/issues/2953

個人的に私はJSコードをクライアントに送るのは悪いことです(クライアントがJSに必要なデータを送信してそこに関数の呼び出しを実行する)が、これは有効な状況があるようです(最後のコメントを見てください)。

+0

これは私の実際のプロジェクトの課題です。しかし、私は試してみましょう。 – Beetlejuice

+1

送信中???いいえ!サイトエンドポイントを使用して動的に作成するJSの共有に使用する必要があります。たとえば、動的に作成された定数です。 – Maxim

2

公式にはサポートされていないので、私たちはJavaScriptResultを自分自身に組み込むことができます。それは簡単です:

public class JavaScriptResult : ContentResult 
{ 
    public JavaScriptResult(string script) 
    { 
     this.Content = script; 
     this.ContentType = "application/javascript"; 
    } 
} 
関連する問題