场景是这样的
在MVC中,很容易返回一个Javascript在客户端执行
public ActionResult DoSomething()
{
return JavaScript("alert('Hello world!');");
}
在客户端,我有一个将 JSON 对象作为参数的 Javascript
类似的东西:
function open(options) {...}
我想从我的操作中调用这个函数,传递给它一个在服务器上生成的 json 对象 所以我写了这个
public ActionResult DoSomething()
{
var viewData = new {...};
return JavaScript( "open('" + Json(viewData) + "')" );
}
但是,当我的 Javascript 函数被调用时,我没有得到任何数据,而是这样:open('System.Web.Mvc.JsonResult')
我将不胜感激在这件事上的任何帮助
谢谢
最佳答案
Json 方法返回一个 JsonResult。不是 JSON 字符串。你可以使用 JavaScriptSerializer
public ActionResult DoSomething()
{
JavaScriptSerializer serializer = new JavaScriptSerializer();
var viewData = new {...};
return JavaScript( "open('" + serializer.Serialize(viewData) + "')" );
}
根据客户端 open
方法的工作方式,您可能需要通过简单地删除方法参数周围的 ' 将 json 数据作为 json 对象而不是字符串发送。
关于javascript - ASP.NET MVC - 返回 JavascriptResult 和 Json 参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3540761/