我试图将MVP应用到我当前的项目中(Webforms),这让我感到困惑。
让我们说我有一个页面,我希望用户输入他的付款信息,然后将其发送到我的应用程序中的付款处理逻辑。
所以,让我们说支付信息看起来像这样:
public class PaymentInformation
{
public BillingInformation BillingInformation { get; set; }
public CreditCard CreditCard { get; set; }
}
public class BillingInformation
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string Address { get; set; }
public string City { get; set; }
}
public class CreditCard
{
public string CardNumber { get; set; }
public string CVV { get; set; }
public int ExpirationMonth { get; set; }
public int ExpirationYear { get; set; }
}
View应该做这样的事吗?
public interface IPaymentView
{
string FirstName { get; }
string LastName { get; }
string Address { get; }
string City { get; }
string CardNumber { get; }
string CVV { get; }
int ExpirationMonth { get; }
int ExpirationYear { get; }
}
然后让Presenter获取所有这些属性并创建实际的PaymentInformation实例?
或者View应该这样做吗?
public interface IPaymentView
{
PaymentInformation PaymentInformation { get; }
}
在这种情况下,View会从自己的控件中获取信息并创建支付信息的实际实例,以便Presenter可以使用它?
我真的很困惑主持人应该如何获得"复杂"来自View的数据。
答案 0 :(得分:0)
我看到它的方式,在MVP中,Presenter是唯一能够做任何真实“思考”的课程。
视图只是与用户交互的一种方式;向用户显示信息,并为用户输入信息。
模型是获取信息并将其传递到需要的位置,或者更确切地说,演示者告诉它获取信息并传递信息。所有模型都存储数据。
从我所看到的看起来你的视图看起来像是你的模型,你的所有视图应该真的有一个btnSave_Click(..)
方法,然后调用Presenter运行适当的方法来存储/显示付款信息,然后告诉模型从视图/设置到视图。
总结一下;