T4MVCのいたるところに、実際のメソッド呼び出しのように見えるものを停止させる隠された魔法がどこかにあるのではないかと思いました。次に、ビューのコンパイルに失敗し、stackTraceが実際のメソッドに入りました。
[Authorize]
public string Apply(string shortName)
{
if (shortName.IsNullOrEmpty())
return "Failed alliance name was not transmitted";
if (Request.IsAuthenticated == false || User == null || User.Identity == null)
return "Apply authentication failed";
Models.Persistence.AlliancePersistance.Apply(User.Identity.Name, shortName);
return "Applied";
}
したがって、このメソッドは結局テンプレートで生成されません。
<%=Ajax.ActionLink("Apply", "Apply", new RouteValueDictionary() { { "shortName", item.Shortname } }, new AjaxOptions() { UpdateTargetId = "masterstatus" })%>
<%=Html.ActionLink("Apply",MVC.Alliance.Apply(item.Shortname),new AjaxOptions() { UpdateTargetId = "masterstatus" }) %>
2番目のメソッドは、コンパイル時に例外をスローしました。これApply
は、コントローラーのメソッドに[Authorize]
属性があり、ログオンしていない人がこれをクリックすると、ログインにリダイレクトされてから、このページに戻るためです。そこで、もう一度[適用]をクリックして、今度はログインします。
そして、はい、一方はT4MVCバージョンで両方を試しましたAjax.ActionLink
が、もう一方はそうであることに気付きました。Html.ActionLink