2011-11-09 28 views
1

私はJavaScriptの関数については言及していませんが、C#で書かれたサーバー側の関数です。MVC3では、再利用可能な関数をビューで作成することは可能ですか?

私のビューのhtmlテーブルでは、ソート可能な列のように動作するテーブルヘッダーを作成しています。しかし、ソート可能性は複雑なロジックに依存しているので、ロジックを各列に書き込むのではなく関数に入れたいと思っています。

@Amr ElGarhyお客様のヘルパーを提案していただきありがとうございます。作成したヘルパークラスは再調整されていません。

ヘルパーコード:

namespace MyHtmlHelpers 
{ 
    public static class CustomHelpers 
    { 
     public static string MySortColumn(this HtmlHelper helper, string label, string col, string dir, UrlHelper url) 
     { 
      return string.Empty; 
     } 
    } 
} 

web.configファイル:

<pages> 
    <namespaces> 
    <add namespace="System.Web.Helpers" /> 
    <add namespace="System.Web.Mvc" /> 
    <add namespace="System.Web.Mvc.Ajax" /> 
    <add namespace="System.Web.Mvc.Html" /> 
    <add namespace="System.Web.Routing" /> 
    <add namespace="System.Web.WebPages"/> 
    <add namespace="MyHtmlHelpers"/> 
    </namespaces> 
</pages> 

しかしビューで、どちら@ HtmlHelper.MySortColumnも@ Html.MySortColumnがregonizedされます。私はここに何かを逃していますか私も自分のPCを再起動します。

更新 web.configの名前空間を追加しても機能しませんでした。ビューページでの追加が機能します。

+0

これをビューの最初の行に追加しようとします。 '@using MyHtmlHelpers' –

答えて

3

は、私は、カスタムを作成するためにHTMLヘルパーと方法を見て取る必要があると思いますエリアを使用して?エリアには独自のビューフォルダがあり、通常は独自のweb.configを持っています。その場合、そのweb.configに名前空間を追加しようとすることができます。

また、web.configファイルはフォルダによって階層的に解決されます。つまり、すべてのエリア固有のビューに影響を与えるベースのAreaディレクトリにweb.configを持つことができます。

私の場合、私は自分の名前空間を追加する2つのweb.configファイルを持っています.1つはViewディレクトリにあり、もう1つはAreaディレクトリにあります。

0

ロジックを使って基本クラスを作成し、このクラスからビューを派生させる方が良いです。通常は、ビュー間で再利用する方法を公開したり共有したりしないでください。

http://www.asp.net/mvc/tutorials/creating-custom-html-helpers-cs

http://www.asp.net/mvc/videos/how-do-i-create-a-custom-html-helper-for-an-mvc-application

+0

目的は同じビュー内で再利用し、他のメンバーとは共有しません。 –

+0

この機能を1つのビューにのみ分離する必要があるのはなぜですか?セキュリティ上の懸念はありませんか? –

+0

私は便利なコーディングのためのユーティリティクラス/メソッドを作成しています。 –

0

をお試しください:

+0

私はエリアを使用していません。しかし、私はViewページの上に "using"ステートメントを追加して暮らすことができます。 –

関連する問題