Вы должны делать это на вашем контроллере каким-то методом, который возвращает действие json (jsonresult). Хранилище должно возвращать только ваши данные и все операции, которые вам нужно сделать, независимо от того, выполняете ли вы преобразование данных в json или какую-либо другую логику, должны выполняться на контроллере или в каком-то вспомогательном классе, который будет вызываться контроллером.
Edit:
Чтобы иметь метод, который возвращает JsonResult, вам нужно иметь ссылку на System.Web.Mvc.ActionResult, и поскольку хранилище обычно находится в модели, у вас не будет этой ссылки. Другое дело что вы, возможно, нарушаете свой дизайн, логика должна быть доступна на контроллере для того, что вы хотите
Редактировать 2:
Код ниже взят из старого поста, который вы можете увидеть здесь . Обратите внимание, как действие PopulateDetails
получает объект пользователя из хранилища, а - это все, что делает хранилище. Фактическая логика происходит внутри этого метода, например, заполнение остальной части класса UserModel
, и затем возвращает JsonResult:
public JsonResult PopulateDetails(UserModel model)
{
UserResultModel userResultModel = new UserResultModel();
if (String.IsNullOrEmpty(model.UserId))
{
userResultModel.Message = "UserId can not be blank";
return Json(userResultModel);
}
User user = _userRepository.GetUser(model.UserId);
if (user == null)
{
userResultModel.Message = String.Format("No UserId found for {0}", model.UserId);
return Json(userResultModel);
}
userResultModel.LastName = user.LastName;
userResultModel.FirstName = user.FirstName;
userResultModel.Message = String.Empty; //success message is empty in this case
return Json(userResultModel);
}