开发者

Mvc 3 Razor : Using Sections for Partial View?

I defined a section in partial view and I want to specify the content of section from view. But I can't figure out a way. In asp.net user controls, we can define asp:placeholders, and specify the content from aspx wh开发者_如何学编程ere user control lies. I'll be glad for any suggestion.

Thanks

[edit] Here is the asp.net user control and I want to convert it to razor partial view

User control:

<%@ 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>

User control code:

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>

[edit]

I want to do exactly this in mvc 3 razor partial view.


Templated Razor Delegates seem to be what you're after. They essentially let your helpers take the template (your delegate) as an argument you pass in from the view. This way it is the caller (your view) that controls the way information is rendered, not the helper, thus giving you more flexibility.


You should take a Func<object, HelperResult> as a parameter to the partial view.
In the parent view, you can pass HTML like @<div>...</div> as the parameter.

In the partial view, you can call the delegate with any parameter to render the HTML.

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜