【问题标题】:Going from Webforms to MVC 4从 Web 表单到 MVC 4
【发布时间】: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 语句编写所需的样式。
  • 次要选择:我仍然建议您根据布尔值而不是样式有条件地在剃刀中分配类。

标签: asp.net-mvc asp.net-mvc-4


【解决方案1】:

1.) 嗯,有点,有点,但不是真的。非常不同的东西 - 详细的解释会很长。

2.) 可能是等效的,但并不是一件好事。您的模型应该只包含数据。但是,是的,您可以在剃刀视图中使用这些数据来有条件地做一些事情,包括显示或不显示事物。但是,将 css 字符串直接放入模型数据中充其量是很笨拙的,而且尽可能避免使用内联样式通常是个好主意。 IsViewable 作为布尔值会更好,您仍然可以处理显示或隐藏元素(以不同的方式)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-17
    • 2014-10-21
    • 2013-09-09
    • 2012-09-15
    • 2012-11-30
    相关资源
    最近更新 更多