如何从ASP.NET 5 MVC 6控制器操作返回Javascript

8

我需要一个返回JavaScript片段的Action。

在MVC 5中,我们有:

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

但是在MVC 6中,我们不再需要这样做。

现在有没有一种方法可以做到这一点?


返回内容("<script language='javascript' type='text/javascript'>alert('你好,世界!');</script>"); - warrior
@din 为什么不把它发布为答案呢? - Christos
@Christos 按照您的意愿:-) - warrior
3个回答

9
这可以通过返回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)},    
    });

1
您是否可以同时提供一份解释呢?仅提供代码的答案通常会被视为不够严谨,因为它们缺乏明确的逻辑推理。也许可以附上一个指向 MSDN 或其他相关文档的链接以便查阅参考资料? - Travis J
第一个选项在mvc 6中不起作用。什么都没有发生。 - Beetlejuice
你能否在客户端控制器代码中添加更多内容,而不仅仅是一个简单的返回语句?我更喜欢第二个选项。 - warrior
实际上,我需要呈现一个部分视图并在 bootbox 控件中展示它。 - Beetlejuice
我应该把Ajax代码放在哪里?我没有视图,我只想显示一个警告。 - Ashenafi Semu

5

我认为我们可以自己实现JavaScriptResult,因为它并没有得到官方支持。这很容易:

public class JavaScriptResult : ContentResult
{
    public JavaScriptResult(string script)
    {
        this.Content = script;
        this.ContentType = "application/javascript";
    }
}

0

目前,ASP.NET MVC 6不支持像MVC 5中的JavaScriptResult。您可以在此处找到有关此问题的有趣讨论(还提供了一些解决方案):https://github.com/aspnet/Mvc/issues/2953

个人认为向客户端发送JS代码是不好的(向客户端发送JS需要的数据,然后在那里执行函数调用),但似乎存在有效的情况(请查看最后一条评论)。


这将是我目前项目的一个挑战。但我会尝试一下。 - Beetlejuice
3
发送?不!它应该用于使用网站端点共享动态创建的JS。例如,用于动态创建的常量。 - Maxim

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接