ASP.NET MVC - вернуть JavascriptResult и параметр Json

Вот сценарий

В 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
задан tereško 18 May 2013 в 21:17
поделиться

1 ответ

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

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

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

2
ответ дан 2 September 2019 в 21:56
поделиться
Другие вопросы по тегам:

Похожие вопросы: