Как MVC отделяет бизнес-логику от пользовательского интерфейса в ASP.NET MVC? - PullRequest
1 голос
/ 03 апреля 2019

Я новичок в ASP.NET MVC и Design Pattern. все еще пытается понять, как MVC отделяет бизнес-логику от UI / View.

Допустим, у нас есть такой сценарий:

Существует модель Employee со свойством TotalSales для общих продаж в этом месяце, а также представление индекса по умолчанию.

так что в представлении движок бритвы должен заполнять детали сотрудника, такие как имя, пол, отдел и т. Д. Поэтому нам просто нужно передать модель представления в представление, которое, кажется, работает хорошо. Но, скажем, я хочу, чтобы пользовательский интерфейс / HTML также отображал дополнительный абзац «Этот сотрудник - хороший сотрудник», если TotalSales сотрудника> 10000 в этом месяце, в противном случае отображается «Этот сотрудник должен улучшить свои маркетинговые навыки». Итак, в шаблоне представления я должен кодировать так:

@if (employeeInstance.TotalSales > 10000)
{
    <p>This employee is a good employee</p>
}else
{
    <p>This employee needs to improve his marketing skill</p>
}

но разве бизнес-логика не смешана внутри представления, что противоречит цели шаблона MVC?

Ответы [ 2 ]

1 голос
/ 03 апреля 2019

вы можете использовать свою логику в модели. как если у вас есть модель, как показано ниже

public class Employee
{
    public int Id { get; set; }
    public string Name { get; set; }
    public double TotalSales { get; set; }
    public string Comment
    {
        get
        {
            if (TotalSales > 10000)
            {
                return "This employee is a good employee";
            }
            else
            {
                return "This employee needs to improve his marketing skill";
            }
        }
    }
}

теперь вы можете использовать Comment свойство в вашем представлении

<p>@Model.Comment</p>

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

0 голосов
/ 03 апреля 2019

Выполните логику в контроллере, вернув ViewBag (или вы вернете ViewModel)

Controller

if (employeeInstance.TotalSales > 10000){
    ViewBag.employeetext = "This employee is a good employee";
}
else{
    ViewBag.employeetext = "This employee needs to improve his marketing skill";
}

View

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