2

私は Url.Action("string", "string) が好きではないので、拡張メソッドの下に書きました

public static string Action<TController>(this UrlHelper urlHelper, Expression<Func<TController, object>> actionExpression)
{
    var controllerName = typeof(TController).GetControllerName();
    var actionName = actionExpression.GetActionName();

    return urlHelper.Action(actionName, controllerName);
}

以下のようにカミソリビューで使用します。

@{Url.Action<ClientController>(action => action.ClientDetails());}

何もレンダリングしません。私はどこかで間違いを犯していますか、それとも何か不足していますか? アクション名とコントローラーをハードコーディングするのではなく、タイプセーフの性質が好きなので、これを行うことは可能ですか?

4

1 に答える 1

1

角かっこを使用すると、コード ブロックが示されます。括弧 (以下を参照) の使用は、明示的な表現です。式は HTML の一部として出力されますが、コード ブロックは出力されません。

@(Url.Action<ClientController>(action => action.ClientDetails()))

より完全な回答については、この SO 投稿をご覧ください。

于 2012-10-30T16:07:02.237 に答える