ASP.NET MVC - вернуть JavascriptResult и параметр Json - PullRequest
1 голос
/ 22 августа 2010

Вот сценарий

В 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')

Буду признателен за любую помощь по этому вопросу

Спасибо

1 Ответ

2 голосов
/ 22 августа 2010

Метод Json возвращает JsonResult.Не строка JSON.Вы можете использовать JavaScriptSerializer

public ActionResult DoSomething()
{
      JavaScriptSerializer serializer = new JavaScriptSerializer();
      var viewData = new {...};
      return JavaScript( "open('" + serializer.Serialize(viewData) + "')" );          
}

В зависимости от того, как работает метод open на стороне клиента, вам может потребоваться отправить данные json как объект json вместо строки, просто удалив'вокруг аргумента метода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...