2015-09-18 85 views
5

我需要一个Action返回JavaScript片段。如何从ASP.NET 5 MVC 6控制器动作返回Javascript

在MVC 5,我们有:

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

但在MVC 6我们鸵鸟政策。

现在有办法做到这一点吗?

+0

回报的内容( “”); – din

+0

@din你为什么不把它作为答案发布? – Christos

+0

@Christos只要你愿意:-) – din

回答

8

这可以通过返回ContentResult MSDN

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

或其他方式将是利用AJAX的

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

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

你可以请包括与此解释。仅有代码的答案通常会被忽视,因为他们缺乏推理。也许包括一个链接到MSDN或引用内容的东西? –

+0

第一个选项不适用于mvc 6.完全没有任何反应。 – Beetlejuice

+0

您可以添加更多代码而不是简单的返回语句,客户端控制器代码。尽管如此,我更喜欢第二种选择 – din

0

目前ASP.NET MVC 6不支持MVC像JavaScriptResult实现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"; 
    } 
} 
相关问题