Podczas tworzenia zdarzenia Page_Init tworzę zmienną składową List. Mam problem z odwoływaniem się do obiektów na liście z mojego osadzonego kodu C# na stronie * .aspx. Ten błąd jest wyjątkiem dla modułu wykonawczego programu Runtime, który mówi, że obiekt nie zawiera definicji elementu JobID.Nie można odwoływać się do obiektów dynamicznych we wbudowanym kodzie ASPX
Po wywołaniu debuggera, widzę, że zmienna j pętli foreach rzeczywiście ma właściwość dynamiczną o nazwie JobID i jest wypełniona wartością int. Moje pytanie brzmi, dlaczego mój osadzony kod C# nie może działać z obiektem dynamicznym. Czy istnieje instrukcja <% @ Import%>, którą muszę obsługiwać z obiektami dynamicznymi? Próbowałem dodać <% @ Import namespace = "System.Dynamic"%>, ale to nie pomogło.
Dzięki za pomoc. Mark
Code Behind:
using System;
using System.Collections.Generic;
using System.Linq;
using Jobbarama.WebCode;
using DataModel;
public partial class contact : System.Web.UI.Page
{
public List<dynamic> JobList { get; set; }
protected void Page_Init(object sender, EventArgs e)
{
SessionManager mgr = SessionManager.Current;
using (myEntities context = new myEntities())
{
var qry = from c in context.vjobList
where c.CampaignID == mgr.CampaignID
select new
{
c.JobID, c.JobTitle, c.CompanyName, c.InterestDate, c.InterestLevel
};
JobList = qry.ToList<dynamic>();
}
}
}
}
Kod ASPX:
<select id='cboJob' name='cboJob' style='width: 150px;'>
<%foreach (var j in JobList){ %>
<option value="<%=j.JobID %>"><%=j.JobTitle%> [<%=j.CompanyName%>]</option>
<%} %>
</select>
Mam taką samą trudność z osadzonym kodem, w którym mój kod odpowiada za IEnumerable. Pojawia się gdzieś, gdzie moja dynamika jest przekształcana w obiekt lub coś. @sisdog, nawet jeśli zmodyfikujesz foreach tak, aby wyglądał jak <% foreach (dynamiczny j w JobList)%>, to nie działa. –
kd7iwp
Chociaż nie jest to odpowiedź na pytanie, dlaczego to nie działa, możesz przepisać swój kod, aby korzystać z narzędzia DataBinder.Eval, które wykorzystywałoby odbicie, aby pobrać właściwość JobID. – Tony