asp.net-mvc - MVC 逻辑、 View 和助手 - 一个具体的故事

标签 asp.net-mvc model-view-controller castle-monorail

我和一位同事正在讨论如何在页面上生成链接。我们应该使用 html 助手还是在 View 中保留非常简单的 View 逻辑?

对于这个项目,我们使用 CaSTLe Monorail 和 NVelocity View 引擎。我将感谢任何考虑以下两个选项并提出意见的人。

在这个故事中,该链接当前仅在单个页面上使用。

选项 1 - 有助手

帮助代码

 var action = snail.IsActive ? "ConfirmDeactivate" : "ConfirmActivate";
   var routeValues = new Dictionary<string, string>
                      {
                       {"action", action},
                       {"querystring", "id=" + snail.ID}
                      };
   var href = UrlHelper.For(routeValues);

   var link = new XElement("a");
   link.SetAttributeValue("href", href);
   link.SetValue(action.Substring(7));

   return link.ToString();

然后在 View 中,我们像这样调用助手:

<li>$Html.SnailActivationSwitchLink($item)</li>

选项 2 - 一切尽在掌握

#if($snail.IsActive)
  <a href="$Url.For("%{action='ConfirmDeactivate', querystring='id=$snail.ID'}")">Deactivate</a>
  #else
   <a href="$Url.For("%{action='ConfirmActivate', querystring='id=$snail.ID'}")">Activate</a>
  #end

最佳答案

对我来说,我更喜欢选项1。在helper上做逻辑更方便,也更优雅。

关于asp.net-mvc - MVC 逻辑、 View 和助手 - 一个具体的故事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4323560/

相关文章:

javascript - 使用 cshtml 页面中 SQL 数据库表中的数据更新 html 表

javascript - 如何在MVC中的脚本中获取ViewData?

javascript - 在 Ext JS 4 MVC 应用程序中,什么应该负责加载商店?

model-view-controller - 将客户端MVC/MVVM模式与MVC服务器端模式一起使用

perl - 修改 Mojolicious 中的默认 Controller /模型路径

c# - 你如何在 CaSTLe MVC (Monorail) 中获取用户的 IP 地址?

javascript - 如何从 javascript 或 Jquery 端检查 ViewData 变量是否过期

asp.net-mvc - 使用成员资格提供程序的用户和角色列表

elmah - 城堡单轨铁路和 ELMAH