Вот сценарий
В MVC легко вернуть Javascript для выполнения на клиенте
public ActionResult DoSomething()
{
return JavaScript("alert('Hello world!');");
}
На клиенте у меня есть Javascript, который принимает объект JSon в качестве параметра
Что-то похожее на это:
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 вместо строки, просто удалив ' вокруг метода аргумент.