2014-09-23 3 views
0

я в настоящее время работает на основе MVC project.I видел людей с использованием моделей N контроллеров по-разному, им интересно, какой из них является правильным методом в соответствии с принципами MVCПравильное использование контроллера и модели MVC

Метод-1 :

контроллер:

public ActionResult index() 
    { 
    return View(); 
    } 

public string save() 
    { 
return null; 
    } 

public string Update() 
{ 
return null; 
} 

модель:

public string xx {get;set;} 
    public string yy {get;set;} 

М еню-2:

Контроллер:

public ActionResult index() 
{ 
return View(); 
} 

Модель:

public string xx {get;set;} 
public string yy {get;set;} 

public string save() 
     { 
    return null; 
     } 

    public string Update() 
    { 
    return null; 
    } 
+0

Способ 1. Ваши действия по сохранению/обновлению должны быть ActionResults (или аналогичными) в контроллере, а не в вашей модели. При сохранении/обновлении вы обновите свою модель и передадите ее обратно в свой вид. – dotnethaggis

+0

модель должна содержать только свойства? .. где я должен поместить функции заполнения данных в контроллер или модель? – AfterGlow

+0

Вы бы назвали уровень бизнес-логики своими действиями в своем контроллере. – dotnethaggis

ответ

0

Method 1.Because Сохранить/Обновление Action Method, которое должно быть в пределах Controller, а не модели.

+0

Что делать с функциями, которые заполняют меню вниз. Где я должен его поставить? .. контроллер или модель? – AfterGlow

+0

Контроллеры - это некоторые объекты, которые проверяют соответствие ввода пользователя бизнес-логике. –

2

Я бы сказал, что ни один из них не является правильным, хотя метод 2 ближе к нему.

У вас должна быть ваша логика в отдельном сервисе, который потребляется вашими контроллерами.

Пример:

public ActionResult DoStuff() { 
    var model = Service.save(); 
    return View(model); 
} 

public class Model { 
    public string xx { get; set; } 
    public string yy { get; set; } 
} 

public class Service 
{ 
    public string save() 
    { 
     return null; 
    } 

    public string Update() 
    { 
     return null; 
    } 
} 

Ни контроллеры или модели должны иметь бизнес-логику в них. They should only have a single responsibility. Модель хранит данные, возвращаемые контроллером. Контроллер просто преобразует данные, которые он получает от службы, в модель.

+0

Согласитесь с вышесказанным. Что бы я сказал в своих комментариях в ваших вопросах. Где @GrimurD вызвал службу класса, вот что я имею в виду как Business Logic. – dotnethaggis

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