ASP.net est nouveau pour moi et j'ai reçu un projet existant sur lequel travailler. J'ai écrit SO: Asp.Net WebForms - How to pass ViewData as param to User Control mais je ne devais pas être clair car il n'y avait pas de réponses.asp.net C# générer des paramètres de contrôle utilisateur
Je veux faire:
Consignment.ascx:
<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<Daff.Lae.TraceCommon.ValueObjects.NoiReproNLS.NoiNlsVO>" %>
<%@ Register TagPrefix="uc" TagName="speciesgrid" Src="~/Views/Noi/ReproNLS/SpeciesGridController.ascx" %>
<%
var applicationId = ViewData["NoiId"];
var applicationSpecies = ViewData["applicationSpecies"] as HashSet<string>; // Same as the JS var applicationSpecies but from server - needed to build page
%>
...
<%
foreach (String species in applicationSpecies)
{
%>
<div id="<%=species%>_grid" style="display: none;">
<uc:speciesgrid runat="server" species=<%=species%>/>
</div>
<%}
%>
Mais il échoue sur <%=species%>
en <uc:speciesgrid
avec:
{"Server tags cannot contain <% ... %> constructs."}
Le contrôle de l'utilisateur:
SpeciesGridController.ascx
<%@ Control Language="C#" ClassName="SpeciesGrid" %>
<%@ Import Namespace="Kendo.Mvc.UI" %>
<%@ Import Namespace="Daff.Lae.TraceCommon.ValueObjects.NoiReproNLS" %>
<%@ Import Namespace="System.Diagnostics" %>
<script runat="server">
private IDictionary<string, object> readRouteValueDictionary = new Dictionary<string, object>();
private int _applicationId;
private string _species;
public string species
{
set
{
if (!value.IsEmpty())
{
_species = value;
readRouteValueDictionary.Add("species", value);
}
}
get
{
return _species;
}
...
}
</script>
<fieldset>
<legend><%=species%></legend>
<div>
<% Html.Kendo().Grid<NoiNlsConsignmentVO>()
.Name("grdNlsConsignment"+species)
...
%>
</div>
</fieldset>
Comment peut-on obtenir le <uc:speciesgrid runat="server" species=<%=species%>/>
travailler?
Utilisez-vous MVC ou webforms façon de définir ASCX? Premier point: vous ne pouvez pas avoir le contrôle 'runat =" server "' avec le bloc de code '<% ... %>' pour définir les valeurs d'attribut. Si vous utilisez Kendo & ASP.NET MVC, envisagez d'utiliser 'Html.Partial' ou' Html.RenderPartial' à la place de l'approche du registre de contrôle utilisateur. –
Formulaires Web. Je vais essayer d'utiliser 'Partials'. Merci! – HankCa