我的主页模型/视图/控制器(配置页面的初始状态)工作正常。
但我也需要回应用户在页面上所做的更改(从选择中选择一个选项,选中一个复选框等),并且还没有让它工作。
也许我遇到问题的原因是我试图重复使用我的" Home" model,它不仅包含我需要的页面初始化,还包含其他一些内容。例如,我的模型:
public class HomeModel
{
public DataTable Units { get; set; }
public DataTable Reports { get; set; }
public DataTable UnitReportPairEmailVals { get; set; }
public DataTable UnitReportPairGenerateVals { get; set; }
. . .
}
...包含页面首先需要的东西("单位"和"报告"以及省略号点所代表的东西),但也只是稍后需要的东西(另一个)两个显示)。
我想知道至少部分问题是将数据恢复(通过对HomeController中的另一个方法的Ajax调用)是因为我应该使用单独的模型和控制器来进行Ajax调用。
所以我想知道:模型/控制器是否会增加代码异味/反模式,还是必要的?我应该创建另一个模型,如:
public class AJAXModel
{
public DataTable UnitReportPairEmailVals { get; set; }
}
......还有一个相应的独立控制器吗?
如果我有一个在各种场景中使用的复杂模型,似乎每次我将模型作为Action的返回值(结果)传回时,很多多余的/未填充的东西也会被传回(只有我当时在Controller中填充时感兴趣的成员,因此传回了很多空/空成员)。
所以我的问题是,我应该为每个"用例"创建特效模型/控制器,还是可以 - 或者甚至更好 - 将一堆东西组合成一个模型/控制器对? / p>
答案 0 :(得分:2)
没有令人信服的理由将Model
限制为单个Controller
,或者期望Controller
只有一个Model
。您可以在一个Controller
中编写整个应用程序(顺便说一句,这真的很糟糕)。
通常,划分是逻辑划分...在一个控制器中与同一组Models
通信的一堆操作。当你打开源文件时,更多的是让你的大脑不会融化。
您经常有多个Views
,并且他们倾向于使用控制器中的Actions
来命名名称,但这并不是严格执行的。
当您认为View
中的数据超出必要时,可以通过将Model
映射到ViewModel
来简化View
中的代码来简化View
1}}。是的,这是MVVM ......而且......大脑在Controller
中处理更简单的对象时受到的伤害更少。
您可以在var express = require('express');
var app = express();
var server = require('http').createServer(app);
var io = require('socket.io')(server);
io.on('connection', function(socket){
console.log('a user connected');
socket.on('disconnect', function(){
console.log('user disconnected');
});
});
io.on('data', function(data) {
console.log('DATA from client is: ' + data);
// Close the client socket completely
});
server.listen(4200);
console.log('Monitoring server listening on port 4200');
中手动映射对象,也可以使用自动映射器进行映射。有一些可供选择......它们使MVVM变得更简单。您不一定需要一个。他们只是有帮助。