0

スパークビューで次のようなことをしたい。

@{this.LinkTo("1234")}

次のようなものを出力する必要があります

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

これを行う良い方法を見つけることができないようです。

「fubumvc htmlhelpers」を検索すると、msmvc の htmlhelpers に関するより多くのページが表示されます。

プラスは、複数のサイト間で共有できる別のアセンブリにコードを配置できる場合です。

解決

名前空間 MyNamespace
{
    public static class FubuPageExtensions
    {
        public static HtmlTag LinkTo(この IFubuPage ページ、文字列入力)
        {
            return new LinkTag(input, "domain.tld?var={0}".ToFormat(input));
        }
    }
}

...そして私のスパークビューで

<use namespace="MyNamespace" />

${this.LinkTo(Model.Something)}
4

3 に答える 3

0

同様の要件があり、この方法で解決しました(これが最善のアプローチかどうかはわかりませんが、私のシナリオではうまくいきました)。

アイデアは、新しいHtmlTagオブジェクトを返すIFubuPageインターフェイスで拡張メソッドを作成することです。私は Razor ビュー エンジンを使用していることに注意してください。これが Spark でも機能するかどうかは完全にはわかりません。

たとえば、次のコードは新しい <abbr /> タグを生成します。

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));
}
于 2012-05-02T12:44:22.747 に答える
0

spark ファイルに "FubuPageExtensions" 名前空間があることを確認してください。

コメントに記載されているように、共有ディレクトリで「_global.spark」ファイルを使用して、すべての .spark ファイルに拡張名前空間が含まれるようにします。

于 2012-05-03T12:26:07.933 に答える
0

これがあなたにアピールするかどうかはわかりませんが、fubu.spark ビューエンジンがサポートするデフォルトの名前空間の 1 つでヘルパーを宣言することもできます。

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));
}
}
}
于 2012-05-30T02:25:39.807 に答える