2016-05-04 2 views
0

Я недавно закончил образование в ASP.NET MVC, и мне нужны некоторые рекомендации и полезные советы.JSON вместо моделей

Если мне нужны данные из нескольких моделей, я научился строить View Models, но недавно я слышал, что вместо View Models лучше использовать JSON объекты и вернуть объект в качестве модели для View или просто получить все данные из объект JSON от Controller по телефону AJAX вызывает View, а затем отображает данные с jQuery в пределах HTML.

Это лучший способ сегодня вместо обычного View Models и обновлять страницу с запросами POST/GET в URL-адресе?

В Controller создать объект JSON и заполнить его данными, подобными списку для каждого Model или как он работает?

+2

Ответ на этот вопрос: * это зависит *. Иногда полезно связывать клиентскую сторону, иногда это не так. Целые книги есть и могут быть написаны на эту тему – Liam

+1

Кроме того, вы можете комбинировать эти два подхода – eternity

+0

@Liam OK, мне было просто интересно узнать, что думал другой разработчик об этой теме и как они работают, и я также хотел узнать больше об этом , –

ответ

-1

Используйте контроллер web api вместо контроллера mvc.

Контроллер Mvc возвращает отображаемые представления, если не указано иное. Вы не можете вернуть объект в инфраструктуру сущности, потому что циклические ссылки, таким образом, должны иметь dtos.

Тем не менее, веб-контроллер api будет выполнять эти операции без вывода данных. плюс вы можете создать query string parameter, то вы получите свои jsons

+1

Это неправда.Существует не так много, что контроллер веб-api может сделать, что контроллер MVC не может. Они в основном используют ту же технологию под капотом. * Вы не можете вернуть объект в инфраструктуру сущности, потому что циклические ссылки * Я бы предположил, что ваш EF настроен неправильно, если у вас есть эти проблемы. – Liam

0

В зависимости от вашей потребности. На самом деле, все ваши мысли верны и могут использоваться в соответствии с потребностями контекста.

Например, если вам нужно выполнить ops crude opward, вы можете использовать только viewmodel и привязать к форме. Если вам нужны более сложные структуры, вы можете создавать сложные модели представлений, которые содержат более одной модели представления, и вы все равно можете использовать поведение модели по умолчанию. Кроме того, вы можете использовать объекты словаря ViewBag/ViewData для передачи данных в представления.

Если вам нужна асинхронная потребность, вы можете использовать AJAX (Get/Post) называет

0

я мог бы быть старой школой, но я стараюсь использовать view models как можно больше. То, что я обычно делаю это, чтобы заполнить модель представления в методе действия моего контроллера, а затем передать на этой точки зрения модели с точки зрения:

public async Task<ActionResult> Details(int brandId) 
{ 
    BrandViewModel model = await brandTask.DetailsAsync(brandId); 
    if (model == null) 
    { 
      throw new HttpException(404, "404"); 
    } 

    return View(model); 
} 

Есть времена, что мне нужно будет первой загрузке страницы, а затем заполнить определенные элементы управления с данными, возвращающими данные в формате JSON. Некоторое время назад я работал над проектом, где мне нужно, чтобы заполнить datatable с данными JSON после того, как была загружена форма:

public ActionResult GetApplicationNotes(DataTableParameterViewModel parameterViewModel, int id) 
{ 
    IEnumerable<Note> notes = noteService.FindAllByApplicationId(id); 

    var result = 
      from note 
      in notes 
      orderby note.Id descending 
      select new[] 
      { 
       note.Body, 
       note.CreatedDate.FormatDate() 
      }; 

    return Json(new 
    { 
      sEcho = parameterViewModel.sEcho, 
      iTotalRecords = notes.Count(), 
      iTotalDisplayRecords = notes.Count(), 
      aaData = result 
    }, 
    JsonRequestBehavior.AllowGet); 
} 

Все идет вниз, как к тому, что вам нужно, чтобы достичь в вашем сценарии. Если мне не нужно ничего делать, я всегда буду использовать модели просмотра. Если мне нужно обновить некоторые части веб-страницы, я сделаю AJAX вызов и возврат данных в формате JSON.

Смежные вопросы