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

本文关键字:MVC 控制器 NET ASP 返回 Javascript | 更新日期: 2023-09-27 18:13:17

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

在MVC 5中,我们有:
return JavaScript("alert('hello')");

但是在MVC 6中我们没有。

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

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

我认为我们可以自己实现JavaScriptResult,因为它不被官方支持。这很简单:

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

. NET MVC 6不像MVC 5那样支持JavaScriptResult。这里可以找到一个有趣的讨论(也有一些解决你的问题的方法):https://github.com/aspnet/Mvc/issues/2953

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