Mvc 3 Razor: использование разделов для частичного просмотра?

Я определил раздел в частичном представлении и хочу указать содержимое раздела из представления. Но я не могу найти способ. В пользовательских элементах управления 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.


person Muzaffer    schedule 18.02.2011    source источник


Ответы (2)


Шаблонные делегаты Razor кажутся тем, что вы повторно после. По сути, они позволяют вашим помощникам принимать шаблон (ваш делегат) в качестве аргумента, который вы передаете из представления. Таким образом, именно вызывающий объект (ваше представление) контролирует способ отображения информации, а не помощник, что дает вам больше гибкости.

person Daniel Liuzzi    schedule 11.03.2011
comment
Ссылка была сломана. Рабочая ссылка: haacked.com/archive/2011/02/ 26/template-razor-delegates.aspx - person Andrew; 11.12.2013

Вы должны использовать Func<object, HelperResult> в качестве параметра для частичного представления.
В родительском представлении вы можете передать HTML, например @<div>...</div>, в качестве параметра.

В частичном представлении вы можете вызвать делегата с любым параметром для отображения HTML.

person SLaks    schedule 18.02.2011