MVC 3, DI и лучшие практики с представлениями - PullRequest
0 голосов
/ 16 сентября 2011

Рассмотрим два взгляда.Что предпочтительнее и в какой ситуации вы будете использовать стиль 1, а не стиль 2, и наоборот?

Стиль 1: представление инъекции

using System.Web.Mvc;
using Ninject;
namespace Views.Models.ViewClasses {
    public abstract class CalculatorView : WebViewPage {
           [Inject]
           public ICalculator Calulator { get; set; }
    }
}

И представление:

 @inherits Views.Models.ViewClasses.CalculatorView
 @{
     ViewBag.Title = "Calculate";
 }
 <h4>Calculate</h4>
 The calculation result for @ViewBag.X and @ViewBag.Y is @Calulator.Sum(ViewBag.X, ViewBag.Y)

Стиль 2: Использование модели

public class CalculatorModel {
      // a constructor in here somewhere
      public int X { get; set; }
      public int Y { get; set; }
      public int SumXY { get; set; }
}

Контроллер:

public class CalculatorController : Controller {
    private readonly ICalculator _calculator;
    [Inject]
    public CalculatorController (ICalculator calculator)  {
           _calculator = calculator;
    }

    public ActionResult Calculate(int x, int y)
    {
        return View(new CalculatorModel(x, y, _calculator.Sum(x, y))
    }
    ...

Вид:

 @model CalculatorModel
 @{
     ViewBag.Title = "Calculate";
 }
 <h4>Calculate</h4>
 The calculation result for @Model.X and @Model.Y is Model.SumXY

Все, о чем я могу думать, это:

  • Если калькулятор или что-то еще нужно много использовать в представлении, тогда внедрение представления имеет больше смысла, так как в противном случае модель будет иметь загрузки и загрузки данных, в противном случаемодели должны быть предпочтительнее?
...