2

目標

C# + MVC 4 + Razor エンジンで共有 UI テンプレートを作成します。

問題

どうすればいいのかわからない。

詳細

次のテンプレートがあります。

<li>
    <div class="introduction">
        <h3>{productName}</h3>
    </div>
    <div class="presentation">
        <img src="{productImage}" alt="" />
    </div>
    <div class="description">
        <p>Starting by</p>
        <h3>{minProductPrice}</h3>
        <p class="product-unity">/a <span class="product-measure" 
         data-measure-shortcut="{productMeasureShortname">{productMeasureName}
        </span></p>
    </div>
    <div class="controls">
        <button class="button green add" title="Add to comparsion list">+</button>
        <div class="tooltip-quantity">
            <p class="float-left">Quantity:</p>
            <form method="post" action="#">
                <input class="quantity float-left" name="product_quantity"
                maxlength="2" type="text" />
                <span class="float-left">/{productMeasureName}(s)</span>
                <button disabled class="button orange filled float-right">
                   Add
                </button>
            </form>
        </div>
        <button class="button light-blue filled compare float-right" title="This product is available in 6 stores">Compare</button>
    </div>
</li>

それを呼び出したいときは、次のようにします。

@Html.RenderMyTemplate("Product Name", "Product Image", "Min Product Price"...)

論理的には、パラメーターはテンプレートのプレースホルダーを置き換えます。

何か案が?

前もって感謝します!

4

1 に答える 1

2

部分ビューを使用できます:

@Html.Partial("MyView", Model)

MyView基本的に、モデル ( Model) を通常のカミソリを使用したテンプレートとして使用して、指定されたファイル ( ) をレンダリングします。

あなたの場合(私はstring[]asを使用しましModelたが、たとえば、好きなものを使用できますIDictionary<string, string>):

@Html.Partial("MyView", new[] { "Product Name", "Product Image", "Min Product Price" })

ビューで:

@inherits System.Web.Mvc.WebViewPage<string[]>
<li>@Model[0]</li>

UPDATE (辞書付き)

@Html.Partial("MyView", new Dictionary<string, object> { { "name", "Product1"}, { "price", 100 } })

それから

@inherits System.Web.Mvc.WebViewPage<Dictionary<string, object>>
<li>@Model["name"]</li>
于 2013-06-13T16:03:44.347 に答える