我正在尝试 LinqToSql 和 MVP 模式,但在设置良好的设计时遇到了困难。我使用的是 Asp.net 3.5(不是 MVC)
这是一个例子
public interface IMyBusinessCardView
{
string Field1 { get; set; }
string Field2 { get; set; }
string Field15 { get; set; }
}
public class MyBusinessCardPresenter
{
private IMyBusinessCardView _view;
private MyBusinessCard _myCard;
public void ViewClickedSave()
{
_myCard.SaveNewBusinessCard(_view);
}
public void LoadView()
{
_myCard.LoadMyBusinessCardToView(_view);
}
}
public class MyBusinessCard
{
public void SaveNewBusinessCard(IMyBusinessCardView view)
{
using (var context = new DataContext())
{
var card = new BusinessCard()
{
Field1 = view.Field1
};
context.BusinessCards.InsertOnSubmit(card);
context.SubmitChanges();
}
}
public void LoadMyBusinessCardToView(IMyBusinessCardView view)
{
// Query using Linq to Sql and set in view
view.Field1 = card.Fields1;
}
}
我在想 View 和 Controller 非常薄,我想这很好。 “模型”可以访问 View ,这很糟糕吗? 我应该引入 DTO 对象还是应该使用 LinqToSql 生成的实体。
请提供设计反馈。
最佳答案
在 MVP 中,大部分工作应该由 Presenter 完成; View 对演示者的了解越少越好。我还没有看到任何模型与 View 配合使用的东西;我见过演示者在哪里进行所有协调。对于单个页面,可以有多个演示者围绕逻辑展开。
查看其中的图像以了解两种类型的 MVP 模式(被动 View 和监督 Controller ):http://www.yeejie.com/blog/post/2009/01/19/MVP-Passive-View-Supervising-Controller-Presentation-Model.aspx
在此示例中,即使 View 访问监督 Controller 中的模型,但它实际上并未对 View 进行操作。
编辑:刚刚遇到这个框架:http://webformsmvp.codeplex.com/作为一个实现。
HTH。
关于c# - Linq to Sql 设计和 MVP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2287563/