我在C#/ WinForms中创建一个可以在不久的将来迁移到Web应用程序的应用程序,所以我试图找出最好的模式。
我的问题是管理活动的最佳方式是什么?就个人而言,我可以想到两种可能的解决方案:
第一个:
Interface
public interface IAttributionView
{
event ButtonClicked ControllerTestEvent;
}
Form
public delegate void ButtonClicked();
public partial class AttributionFrm : Form,IAttributionView
{
public event ButtonClicked ControllerTestEvent;
public AttributionFrm()
{
InitializeComponent();
}
private void butTest_Click(object sender, EventArgs e)
{
ControllerTestEvent();
}
}
Controller
public class AttributionController
{
private IAttributionView _view;
public AttributionController(IAttributionView view)
{
_view = view;
view.ButtonClicked += new ButtonClicked(Test);
}
private void Test()
{
//Do Something
}
}
第二个:
Form
public partial class AttributionFrm : Form,IAttributionView
{
private AttributionController _controller;
public AttributionFrm(AttributionController controller)
{
_controller=controller;
InitializeComponent();
}
private void butTest_Click(object sender, EventArgs e)
{
_controller.Test();
}
}
Controller
public class AttributionController
{
private IAttributionView _view;
public AttributionController(IAttributionView view)
{
_view = view;
}
private void Test()
{
//Do Something
}
}
我根本不了解ASP.net,这就是为什么我想从您的意见和经验中了解实现这一目标的最佳方法(简化适应性,代码的复杂性)或者其他什么)?
非常感谢。
答案 0 :(得分:2)
事件是连接环境的范例。网络已断开连接。 http
个帖子中没有活动,只有请求和回复。
使用MVC转到ASP.NET需要改变您的思维框架。
您现在正在处理定位由action
管理的特定controller
的帖子。
如果您这样考虑,您的event
可以映射到一个操作,该操作又执行您要封装的代码。
这两个将变得相同:
//Winforms
private void butTest_Click(object sender, EventArgs e)
{
//Your code here
}
//MVC
public ActionResult Test()
{
//Your code here
}
相应的按钮<input type="submit" value="Click here to Test">
将位于向http
提交/Attribution/Test
请求的表单标记内。