2011-01-06 13 views
2

SparkViewEngine 1.1でASP.NET MVC 2を使用していて、エラーメッセージが表示される非静的なフィールド、メソッド、またはオブジェクトにオブジェクト参照が必要です。プロパティ私が達成しようとしています何Spark.Web.Mvc.SparkView.Url.get "私はApplication.sparkビューファイルに次のコードを使用しSparkViewEngine:Application.Sparkのグローバル変数でUrl.Contentを使用する

<global baseImagePath='Url.Content(Context,"~/Content/_images")' type="string" /> 

は、基本的には、ベースイメージのパスを定義していますページテンプレートで参照できるグローバル変数。

は、例えば、マスターApplication.sparkを使用ホーム/ Index.sparkに、私が設定することができ、図回避策として

<a href="..."><img src="${baseImagePath}" alt="..." /></a> 

で次のコードを有することになるハードコードされ私が<global baseImagePath='"~/Content/_images"' type="string" />を実行してbaseImagePathを設定したときの値ですが、手前の "〜"を解決することもできます。

提案がありますか?

ありがとうございました!

私はここにロブの提案共有/ _global.spark

あたりの私の解決策を追加してい 編集は、私がのSystem.Web名前空間へのアクセスを持っているので、<use namespace="System.Web" />を追加しました。 共有/ Application.spark

、ここで私は

<global baseImagePath='VirtualPathUtility.ToAbsolute("~/Content/_images")' type="string" /> 

答えて

3

を追加した問題はUrl.Content(...がSparkViewインスタンスからSystem.Web.MvcにUrlHelperクラスにアクセスしていることです。問題は、Application.sparkがグローバルに対して解析されているときに、生成されたビュークラスがインスタンス化される前にグローバル変数が定義されているため、ビューのインスタンスがまだ存在しないことです。したがって、ビューからUrlのようなアクセスとインスタンス変数を使用することはできません。

しかし、その外観からは、相対パスから絶対パスを取得しようとしています。このためには、System.Webの静的なVirtualPathUtilityクラスを使用することもできます。

ToAbsolute(...)のように、人生を楽にする方法がいくつかあります。現在のコンテキストがある場合は、HttpContext.Current.Server.MapPath(...)メソッドから取得することもできます。


ロブG

+0

おかげで、
すべてのベストを役に立てば幸い! VirtualPathUtility.ToAbsoluteメソッドを使用してそれを行いました。 – Abe

関連する問題