10

部分ビューでセクションを定義しましたが、ビューからセクションの内容を指定したいと考えています。しかし、私は方法を理解することはできません。asp.net ユーザー コントロールでは、asp:placeholders を定義し、ユーザー コントロールがある aspx からコンテンツを指定できます。どんな提案でも喜んでします。

ありがとう

[編集] ここに asp.net ユーザー コントロールがあり、かみそりの部分ビューに変換したい

ユーザー制御:

<%@ Control Language="C#" AutoEventWireup="true" CodeFile="SpryListView.ascx.cs" Inherits="SpryListView" %>
<div spry:region="<%=this.SpryDataSetName%>" id="region<%=this.ID%>" style="overflow:auto;<%=this.DivStyle%>" >
<table class="searchList" cellspacing="0" style="text-align:left" width="100%">
    <thead>
        <tr>
            <asp:PlaceHolder ID="HeaderColumns" runat="server"></asp:PlaceHolder>
        </tr>
    </thead>
</table>

ユーザー制御コード:

public partial class SpryListView : System.Web.UI.UserControl
{
    private string spryDataSetName ;
    private string noDataMessage = "Aradığınız kriterlere uygun kayıt bulunamadı.";
    private bool callCreatePaging;
    private string divStyle;
    private ITemplate headers = null;
    private ITemplate body = null;

    [TemplateContainer(typeof(GenericContainer))]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public ITemplate HeaderTemplate
    {
        get
        {
            return headers;
        }
        set
        {
            headers = value;
        }
    }

    [TemplateContainer(typeof(GenericContainer))]
    [PersistenceMode(PersistenceMode.InnerProperty)]
    public ITemplate BodyTemplate
    {
        get
        {
            return body;
        }
        set
        {
            body = value;
        }
    }

    public string DivStyle
    {
        get { return divStyle; }
        set { divStyle= value; }
    }

    public string NoDataMessage
    {
        get { return noDataMessage; }
        set { noDataMessage = value; }
    }

    public string SpryDataSetName
    {
        get { return spryDataSetName; }
        set { spryDataSetName = value; }
    }

    public bool CallCreatePaging
    {
        get { return callCreatePaging; }
        set { callCreatePaging = value; }
    }

    void Page_Init()
    {
        if (headers != null)
        {
            GenericContainer container = new GenericContainer();
            headers.InstantiateIn(container);
            HeaderColumns.Controls.Add(container);

            GenericContainer container2 = new GenericContainer();
            body.InstantiateIn(container2);
            BodyColumns.Controls.Add(container2);
        }
    }

    public class GenericContainer : Control, INamingContainer
    {
        internal GenericContainer()
        {

        }

    }

    protected void Page_Load(object sender, EventArgs e)
    {

    }
}

aspx

<spry:listview SpryDataSetName="dsOrders" CallCreatePaging="true" runat="server" ID="orderListView">
    <HeaderTemplate>
        <th>&nbsp;</th>
        <th>SİPARİŞ TARİHİ</th>
        <th style="text-align:right">GENEL TOPLAM</th>
        <th style="text-align:right">KDV</th>
        <th style="text-align:right">NET TOPLAM</th>
    </HeaderTemplate>  
 </spry:listview>

[編集]

私はmvc 3のかみそりの部分ビューでこれを正確に行いたいです。

4

2 に答える 2

13

テンプレート化されたかみそりの代表者はあなたが求めているもののようです。基本的に、ヘルパーは、ビューから渡す引数としてテンプレート(デリゲート)を取得できます。このように、情報のレンダリング方法を制御するのは呼び出し元(ビュー)であり、ヘルパーではないため、柔軟性が向上します。

于 2011-03-11T16:00:07.727 に答える
4

Func<object, HelperResult>部分ビューへのパラメーターとしてを取得する必要があります。
親ビューでは@<div>...</div>、パラメーターとして HTML like を渡すことができます。

部分ビューでは、任意のパラメーターを使用してデリゲートを呼び出して、HTML をレンダリングできます。

于 2011-02-18T12:49:20.490 に答える