Доступ к ресурсам через Uri в Asp.net MVC - PullRequest
0 голосов
/ 29 октября 2009

Я работаю над веб-приложением ASP.NET MVC, в котором у меня есть объект со свойством Uri. Uri содержит спокойную ссылку на ресурс в следующем виде:

/Repository/Dataset/5

Действие набора данных контроллера репозитория возвращает содержимое набора данных 5 в виде Json.

Как мне вызвать этот метод из Uri и интерпретировать ответ как Json изнутри объекта?

Большое спасибо.

Ответы [ 3 ]

0 голосов
/ 30 октября 2009

Мое мнение таково, что вы не должны вызывать свой контроллер из любого места в коде. В ASP.NET MVC Controller существует для принятия запроса, получения данных и выбора правильного представления для возврата.

Возможно, вам следует добавить метод в репозиторий, который возвращает уже JSONized-данные, или ввести "Middle man", который может сериализовать данные, возвращаемые из репозитория, чтобы контроллер мог вызывать middle-man для выполнения работы. Тогда хранилище (или «Средний человек») может быть вызвано из любого места кода.

например (используется Json.NET для сериализации JSON):

public class MiddleMan
{
    IRepository repository
    public MiddleMan(IRepository repository)
    {
      this.repository = repository;
    }

    public string GetJsonObjects(int id)
    {
      return JsonConvert.SerializeObject(repository.GetObject(id));
    }

}

тогда контроллер (или где-нибудь в коде) может вызвать этот средний класс:

public string Dataset(int id)
{
  return new MiddleMan(repository).GetJsonObjects(id);
}
0 голосов
/ 30 октября 2009

В настоящее время я собираюсь реализовать метод расширения URI в этом направлении, создав объект WebRequest для Uri.

public static string GetContent(this Uri uri)
{
      var myRequest = (HttpWebRequest) WebRequest.Create(uri);
      myRequest.Method = "GET";
      WebResponse myResponse = myRequest.GetResponse();
      var sr = new StreamReader(myResponse.GetResponseStream(), System.Text.Encoding.UTF8);
      string result = sr.ReadToEnd();
      sr.Close();
      myResponse.Close();
      return result;
}
0 голосов
/ 30 октября 2009

В случае действия на стороне сервера верните JsonResult.

public ActionResult Dataset(int id)
{
  // reository code
  return Json(model);
}

вызов на стороне клиента $. GetJSON .

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