Closed. This question is opinion-based。它当前不接受答案。
                            
                        
                    
                
                            
                                
                
                        
                            
                        
                    
                        
                            想改善这个问题吗?更新问题,以便editing this post用事实和引用来回答。
                        
                        去年关闭。
                                                                                            
                
        
我正在尝试使用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;
    }
}


我在想
视图和控制器非常薄,我猜这很好。
“模型”可以访问视图,这不好吗?
我应该引入DTO对象还是应该使用LinqToSql生成的实体。

请提供对设计的反馈。

最佳答案

在MVP中,大部分工作应在演示者中完成;对演示者的了解越少,那就越好。我还没有看到模型在视图中起作用的任何内容。我已经看到主持人在哪里进行所有协调。在一个页面中,可能会有多个演示者分布在逻辑周围。

签出其中的图像以获得两种类型的MVP模式(被动视图和监督控制器):http://www.yeejie.com/blog/post/2009/01/19/MVP-Passive-View-Supervising-Controller-Presentation-Model.aspx

在此示例中,即使视图在监督控制器中访问模型,它实际上也不会在视图上运行。

编辑:刚刚遇到了这个框架:http://webformsmvp.codeplex.com/作为一个实现。

HTH。

关于c# - Linq to Sql设计和MVP,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/2287563/

10-12 01:08