我需要一个Action返回JavaScript片段。如何从ASP.NET 5 MVC 6控制器动作返回Javascript
在MVC 5,我们有:
return JavaScript("alert('hello')");
但在MVC 6我们鸵鸟政策。
现在有办法做到这一点吗?
我需要一个Action返回JavaScript片段。如何从ASP.NET 5 MVC 6控制器动作返回Javascript
在MVC 5,我们有:
return JavaScript("alert('hello')");
但在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)},
});
你可以请包括与此解释。仅有代码的答案通常会被忽视,因为他们缺乏推理。也许包括一个链接到MSDN或引用内容的东西? –
第一个选项不适用于mvc 6.完全没有任何反应。 – Beetlejuice
您可以添加更多代码而不是简单的返回语句,客户端控制器代码。尽管如此,我更喜欢第二种选择 – din
目前ASP.NET MVC 6不支持MVC像JavaScriptResult
实现5.有关这方面的一个有趣的讨论可以在这里找到(有一些解决方案也适用于你的问题):https://github.com/aspnet/Mvc/issues/2953
我个人认为发送JS代码到客户端是一件坏事(向客户端发送JS需要的数据,然后在那里执行函数调用),但似乎有一个有效的情况(看最后的评论)。
这对我的实际项目来说是一个挑战。但我会试一试。 – Beetlejuice
发送???没有!它应该用于动态创建使用站点端点的JS共享。例如对于动态创建的常量。 – Maxim
我认为我们可以实现JavaScriptResult自己,因为它不被官方支持。这是很容易:
public class JavaScriptResult : ContentResult
{
public JavaScriptResult(string script)
{
this.Content = script;
this.ContentType = "application/javascript";
}
}
回报的内容( “”); – din
@din你为什么不把它作为答案发布? – Christos
@Christos只要你愿意:-) – din