【发布时间】:2014-08-07 22:18:52
【问题描述】:
所以我正在将 WebForms 应用程序转换为 ASP.NET MVC 4,并且我想确保我做出正确的编码选择和假设。
1)。用户控件的 MVC 等价物是局部视图吗?
2)。在 aspx 页面中,您有一个类似
的控件<asp:Label id="X" runat="server">
在后面的代码中有如下代码:
X.Visible = some_condition ? true : false;
好的,对于 MVC,这段代码是否等效?
查看:
<label id="X" style="display: @Model.IsViewable">
型号:
IsViewable = some_condition ? "inline-block" : "none";
【问题讨论】:
-
我认为您应该坐下来阅读 MVC 的基础知识,因为它与 WebForms 大不相同。要回答您的问题,模型不应包含视图逻辑。
-
搜索了一下业务逻辑的摆放位置,众说纷纭。您拥有贫乏的数据模型、瘦控制器/胖模型,甚至创建了一个既不是控制器也不是模型的服务类。这一切都非常令人困惑。
-
业务逻辑应该放在模型中,大多数消息来源会告诉你走瘦控制器/胖模型路径。当你有太多的“上帝”模型时,人们往往会担心,当项目变得如此庞大时,规则可能会有点弯曲。不过,对于您最初的问题,您的模型和控制器中的视觉方面应该为零,我相信每个人都可以同意这一点。人们经常使用单独的数据模型和视图模型,视图模型可以包含验证错误消息等。你的权利,它变得非常混乱,没有什么是一成不变的。
-
好吧,这是有道理的。谢谢你的解释。最好将 IsViewable 设置为 bool(如 Bob Mac 建议的那样)并在视图中使用 if 语句编写所需的样式。
-
次要选择:我仍然建议您根据布尔值而不是样式有条件地在剃刀中分配类。