Page_Initイベント中にListメンバー変数を作成しています。 * .aspxページの埋め込みC#コードからリスト内のオブジェクトを参照する際に問題が発生しました。エラーは、 ''オブジェクト 'に' JobID 'の定義が含まれていないランタイムバインダー例外です。埋め込みASPXコードで動的オブジェクトを参照できません
デバッガを呼び出すと、foreachループの変数jに実際にJobIDという動的プロパティがあり、int値で埋められていることがわかります。だから、私の質問はなぜ私の埋め込まれたC#のコードは、動的なオブジェクトで動作することはできません。動的オブジェクトで作業する必要がある<%@ Import%>ステートメントがありますか?私は<%@ Import namespace = "System.Dynamic"%>を追加しようとしましたが、それは役に立たなかった。
ありがとうございました。背後に マーク
コード:
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>();
}
}
}
}
ASPXコード:
<select id='cboJob' name='cboJob' style='width: 150px;'>
<%foreach (var j in JobList){ %>
<option value="<%=j.JobID %>"><%=j.JobTitle%> [<%=j.CompanyName%>]</option>
<%} %>
</select>
私のコードビハインドがIEnumerableを返す埋め込みコードで同じ問題が発生しています。それは私のダイナミックがオブジェクトや何かに変換されているところに現れます。 @sisdog、foreachを<%foreach(JobListの動的j)%>のように変更しても、動作していないようです。 –
kd7iwp
なぜそれが機能しないのかの答えではありませんが、DataBinder.Evalを使用するようにコードを書き直して、リフレクションを使用してJobIDプロパティを取得することができます。 – Tony