Dav*_*eer 26 c# asp.net-mvc design-patterns
我第一次尝试MVC.我试图实现一个简单的例子.来自这里的灵感.我有这种模式(还是!)?
查看:"嘿,控制器,用户只是告诉我他想要第一个人"
控制员:"嗯,检查了他的证书,他被允许这样做......嘿,模特,我希望你让我成为第一个人"
型号:"第一个人......得到它.回到你身边,控制器."
控制器:"在这里,我将收集新的数据集.回到你身边,查看."
查看:"很酷,我现在将向用户展示第一个人."
视图:
namespace WinFormMVC
{
public partial class Form1 : Form
{
controller cont = new controller();
public Form1()
{
InitializeComponent();
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = cont.checkPermissionsAndGetFirstPerson();
}
}
}
Run Code Online (Sandbox Code Playgroud)
控制器:
public class controller
{
public string checkPermissionsAndGetFirstPerson()
{
string returnValue = "";
if (checkPermissions())
{
model m = new model();
returnValue = m.getFirstPerson();
}
return returnValue;
}
public bool checkPermissions()
{
return true;
}
}
Run Code Online (Sandbox Code Playgroud)
模型:
public class model
{
public string getFirstPerson()
{
return "Bill Smith";
}
}
Run Code Online (Sandbox Code Playgroud)
我会更像这样描述MVC:
请求(MVC URL路由,从以前的UI传递的某些事件等)
控制器 - 检查凭据,获取数据,返回模型
Model - 表示从Controller传回的数据
视图 - 渲染Controller返回的模型.根据型号,可能会显示UI以初始化新的Controller操作.也可以将Model传递给下一个Controller动作.
我认为它可能有点困惑,因为在许多模型实现(例如Linq)中它们提供数据定义和访问,但它仍然是控制器知道从哪里开始(即使它是知道如何保存自己的更改的模型) .
所以,你的代码应该是这样的:
//Controller:
public class PersonController
{
public PersonAction Detail(int personId)
{
Person returnValue;
//get person from DB and populate returnValue
return new PersonAction( returnValue );
}
}
//Model:
public class Person
{
public string FirstName {get; set;}
public string LastName {get; set;}
}
//View:
public partial class PersonDetailView : MVCForm<Person>
{
public Form1( Person model ):base(model) {
textBox1.Text = model.FirstName + " " + model.LastName;
}
private void button1_Click(object sender, EventArgs e)
{
textBox1.Text = model.FirstName + " " + model.LastName;
}
}
Run Code Online (Sandbox Code Playgroud)
这个例子缺少的是使这一切成为可能的框架 - 有两个重要部分:
接受/解析参数并基于其调用控制器的操作方法的东西.例如在Asp.net MVC中这是路由处理程序 - 上面的调用将是请求url:〜/ Person/Detail/personId
从动作获取结果的东西(PersonAction在上面的示例中)并找到要显示的正确视图.在这个例子中,它将打开一个PersonDetailView表单并将Person模型传递给它.
WinForms的MVC实现有很多示例框架 - 其中一个可能是一个很好的起点.
| 归档时间: |
|
| 查看次数: |
64674 次 |
| 最近记录: |