2012-05-02 3 views
0

私はスパークビューで次のようにしたいと思います。FubuMVC:新しいメソッドを追加するにはどうすればいいですかDisplayFor

<a href="domain.tld?var=1234">1234</a> 

のような出力何かが私はこれを行うための良い方法を見つけることができないようすべき

@{this.LinkTo("1234")} 

"fubumvc htmlhelpers"の検索結果が多くなり、msmvcのhtmlhelpersに関するページが増えます。

複数のサイト間で共有できる別のアセンブリにコードを配置することができます。

 
namespace MyNamespace 
{ 
    public static class FubuPageExtensions 
    { 
     public static HtmlTag LinkTo(this IFubuPage page, string input) 
     { 
      return new LinkTag(input, "domain.tld?var={0}".ToFormat(input)); 
     } 
    } 
} 

...と私のスパークビューでソリューション

 
<use namespace="MyNamespace" /> 

${this.LinkTo(Model.Something)} 

答えて

0

私は、同様の要件を持っていたし、私はこの方法(これが最善のアプローチであるかどうかわからない、それを解決私のシナリオではうまくいった)。

アイデアは新規とHtmlTagオブジェクトを返すIFubuPageインターフェイス上の拡張メソッドを作成することです。私はRazorビューエンジンを使用していますが、Sparkでもうまく動作するかどうかは十分にはわかりません。

したがって、たとえば、次のコードは、新しい<略称/ >タグ生成します:あなたのシナリオでは

public static HtmlTag TimeAgoFor(this IFubuPage page, DateTime input) 
{ 
    return new HtmlTag("abbr") 
     .Title(input.ToUniversalTime().ToString("yyyy-MM-ddTHH:mm:ssK")) 
     .AddClass("timeago") 
     .Text(input.ToString("dd-MM-yyyy HH:mm")); 
    } 
} 

を、私は、これはその後、十分なはずだと思う:

public static HtmlTag LinkTo(this IFubuPage page, string input) 
{ 
    return new LinkTag(input, "domain.tld?var={0}".ToFormat(input)); 
} 
+0

私は実際にすでにこれを試してみましたしかし、私はちょうど私のメソッドが存在しないことを示す "動的ビューのコンパイルに失敗しました"を取得します。私は自分自身の名前空間内に拡張メソッドを作成する以外は何もしていません。 Fubuが私の拡張メソッドを "魔法のように"ピックアップするかどうかは分かりませんが、そうは思われません。 – Pingvinen

+0

生成されたビュー/エラー画面で、名前空間がインポートされていますか?そうでなければ、それをインポートする必要があります。 –

+0

私の名前空間は参照されませんが、インポートするにはどうすればいいですか? は現在説明されていません。 http://readthedocs.org/docs/fubumvc/en/latest/topics/viewengines/spark/usingspark.html#fubumvc-spark-limitations – Pingvinen

0

をあなたは持っていることを確認してくださいスパークファイルの "FubuPageExtensions"名前空間。

コメントで述べたように、すべての.sparkファイルは拡張子の名前空間を持っているので、共有ディレクトリに「_global.spark」ファイルを使用します。

0

これがあなたにアピールするだろうが、あなたはまた、例えば、fubu.sparkのviewengineがサポートしている既定の名前空間のいずれかであなたのヘルパーを宣言することができる場合、私は知らない。

namespace FubuMVC.Core.UI 
{ 
public static class MyHelper{ 
public static HtmlTag LinkTo(this IFubuPage page, string input) 
{ 
    return new LinkTag(input, "domain.tld?var={0}".ToFormat(input)); 
} 
} 
} 
関連する問題