我和一位同事正在讨论我们如何在页面上生成链接。我们应该使用html助手还是在视图中保留非常简单的视图逻辑?MVC逻辑,视图和助手 - 一个特定的故事
对于这个项目,我们使用Castle Monorail和NVelocity视图引擎。如果有人考虑以下两种选择并提出他们的意见,我会很感激。
在这个故事中,链接目前仅在单个页面上使用。
选项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();
然后在视图中,我们只需要调用像这样的帮手:
<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
而你保持DRY不会重复if/else在任何你想呈现链接 – 2010-12-01 11:05:40