1

MVC 4 プロジェクトの App_Code ディレクトリのクラスにメソッドがあります。これをコントローラーから呼び出すことはできますが、ビュー (.cshtml) ファイルから呼び出す方法がわかりません。

namespace LST.App_Code
{
    public static class Utilities
    {
        public static readonly log4net.ILog log = log4net.LogManager.GetLogger("GeneralLog");

私の見解から、私はこれらの行に沿っていくつかのことを試しました:

@LST.App_Code.Utilities.log.Info("asdf");

これを行うと、ページを読み込もうとすると、次のコンパイル エラーが表示されます。

説明: この要求を処理するために必要なリソースのコンパイル中にエラーが発生しました。次の特定のエラーの詳細を確認し、ソース コードを適切に変更してください。

コンパイラ エラー メッセージ: CS0433: タイプ 'LST.App_Code.Utilities' が両方の 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\bd7cb704\59585235\assembly\dl3\ に存在します3b0ad3ff\ec2b5faa_0b13ce01\mvcroot.DLL' および 'c:\Windows\Microsoft.NET\Framework\v4.0.30319\Temporary ASP.NET Files\root\bd7cb704\59585235\App_Code.cggwncvj.dll'

ソース エラー:

7 行目: @using (Html.BeginForm()) 8 行目: { 9 行目:
@(LST.App_Code.Utilities.log.Info("asdf")) 10 行目: 11 行目:
@Html.AntiForgeryToken()

プロジェクトのクリーニング、asp.net 一時ファイル ディレクトリ、およびバッチ コンパイル オプションの設定に関する提案を試しました。何も機能していません。

私は Razor 構文の複雑さにあまり詳しくありません。誰かが私を正しい方向に向けることができますか?

4

1 に答える 1

3

.cs ファイルに名前空間がまったくなくても動作するようにします。

app_code フォルダーを作成した場合は、次のようなクラス ファイルを作成できます (名前空間なし)。

using System:
...

public class FooClass{
  public string Foo(...)
  {
      ...
  }
}

そして、次のようにビューから呼び出します。

@{
   new FooClass().Foo(...);

}

私のために働いた...

于 2013-03-11T12:28:44.813 に答える