2

e?を使用してコントローラーでアクションメソッドが使用できない場合に、コンパイル時エラーが発生する可能性がある方法はありますHtml.Actionか?

たとえば、という名前のコントローラーがあり、そのようなコントローラー内に、次の場所にあるヘッダー部分ビューを出力LayoutMainPartialViewsControllerするメソッドがあるとします。Header/Views/Shared/PartialViews/_Header.cshtml

public class LayoutMainPartialViewsController : Controller
{
    //
    // GET: /LayoutMainPartialViews/

    public ActionResult Header()
    {
        return PartialView("/Views/Shared/PartialViews/_Header.cshtml");
    }

}

次に、そのような部分的なビューを含めるために、Razor内で呼び出します

@Html.Action("Header", "LayoutMainPartialViews");

何らかの理由で、指定されたメソッドの名前Headerがに変更されたHeader2場合、コンパイル時エラーは発生せず、実行時エラーのみが発生します。

コンパイル時のエラーを発生させて、実行時のエラーを特定するのがはるかに難しいため、可能な限り最小限に抑えたいと考えています。

別の注意点として、次のようなものを呼び出すのは理にかなっていますか?

@(new LayoutMainPartialViewsController().Header())

上記のメソッドはActionResult、同じ方法で文字列として変換する必要があるを返しますHtml.Action

このように、csprojに変更HeaderHeader2て持っていると、コンパイル時にエラーが発生します。<MvcBuildViews>true</MvcBuildViews>

4

1 に答える 1

2

T4MVCは、ASP.NET MVCアプリ用のT4テンプレートであり、多くの場所でリテラル文字列の使用を排除する強い型のヘルパーを作成します。

これは私が必要としていることを正確に実行し、強く型付けされた識別子とは対照的に、「マジックストリング」の使用を削除します。がtrueに設定されている場合、ビューでもコンパイル時エラーが発生<MvcBuildViews>true</MvcBuildViews>します。

ヒントをくれた@StuartLCに感謝します!

于 2013-01-16T14:30:15.403 に答える