Navalha Mvc 3:Usando seções para visualização parcial?
-
15-11-2019 - |
Pergunta
Eu defini uma seção em visualização parcial e quero especificar o conteúdo da seção em visualização.Mas não consigo descobrir uma maneira.Nos controles do usuário do ASP.NET, podemos definir o ASP: os espaços reservados e especificar o conteúdo do ASPX onde está o controle do usuário.Ficarei feliz com qualquer sugestão.
Obrigado
Editar] Aqui está o controle do usuário do ASP.NET e eu quero convertê -lo para a visualização parcial da RAZOR
Controle do usuário:
<%@ 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>
Código de controle do usuário:
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> </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>
[editar]
Eu quero fazer exatamente isso na visão parcial do mvc 3 razor.
Solução
Delegados Razor Modelo parece ser o que você procura.Basicamente, eles permitem que seus ajudantes tomem o modelo (seu delegado) como um argumento que você passa da visualização.Dessa forma, é o chamador (sua visão) que controla a forma como as informações são renderizadas, e não o auxiliar, proporcionando assim mais flexibilidade.
Outras dicas
Você deveria tomar um Func<object, HelperResult>
como parâmetro para a vista parcial.
Na visualização pai, você pode passar HTML como @<div>...</div>
como parâmetro.
Na visualização parcial, você pode chamar o delegado com qualquer parâmetro para renderizar o HTML.