私と同僚は、ページ上にリンクを生成する方法について議論しています。 htmlヘルパーを使用するか、ビュー内に非常に単純なビューロジックを保持する必要がありますか?MVCロジック、ビューとヘルパー - 特定の話
このプロジェクトでは、Castle MonorailとNVelocityビューエンジンを使用しています。私は以下の両方のオプションを考慮し、意見を述べる人には感謝します。
このストーリーでは、リンクは現在、1ページでのみ使用されています。
オプション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
リンクをレンダリングしたい場所のどこでもif/elseを繰り返さないでDRYを続行します。 –