【问题标题】:Mvc 3 Razor : Using Sections for Partial View?Mvc 3 Razor:使用部分进行部分视图?
【发布时间】:2011-06-29 19:28:31
【问题描述】:

我在局部视图中定义了一个部分,我想从视图中指定部分的内容。 但我想不出办法。在 asp.net 用户控件中,我们可以定义 asp:placeholders 和 从 aspx 中指定用户控制所在的内容。如有任何建议,我将很高兴。

谢谢

[编辑] 这是 asp.net 用户控件,我想将其转换为 razor 局部视图

用户控制:

<%@ 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 razor 局部视图中做到这一点。

【问题讨论】:

    标签: asp.net-mvc razor partial-views sections


    【解决方案1】:

    Templated Razor Delegates 似乎是你所追求的。它们本质上是让您的助手将模板(您的委托)作为您从视图传入的参数。这样,控制信息呈现方式的是调用者(您的视图),而不是帮助者,从而为您提供了更大的灵活性。

    【讨论】:

    【解决方案2】:

    您应该将Func&lt;object, HelperResult&gt; 作为局部视图的参数。
    在父视图中,您可以将@&lt;div&gt;...&lt;/div&gt; 之类的HTML 作为参数传递。

    在局部视图中,您可以使用任何参数调用委托来渲染 HTML。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-09-11
      • 2021-08-13
      • 2011-11-25
      相关资源
      最近更新 更多