加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net – 无法在嵌入式ASPX代码中引用动态对象

发布时间:2020-12-16 03:47:17 所属栏目:asp.Net 来源:网络整理
导读:我在Page_Init事件期间创建了一个List成员变量.我在* .aspx页面中从嵌入式C#代码引用列表中的对象时遇到问题.错误是运行时绑定程序异常,表示“’对象’不包含’JobID’的定义”. 调用调试器时,我可以看到foreach循环的变量j确实有一个名为JobID的动态属性,并
我在Page_Init事件期间创建了一个List成员变量.我在* .aspx页面中从嵌入式C#代码引用列表中的对象时遇到问题.错误是运行时绑定程序异常,表示“’对象’不包含’JobID’的定义”.

调用调试器时,我可以看到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>

解决方法

我猜这可能是一个权限问题,因为使用匿名类和aspx后期编译不同程序集中的东西.

您可以使用impromptu-interface来完成这项工作.

using ImpromptuInterface

然后你创建一个接口(我使用动态,因为我不知道你的类型)

interface ISelectJob
 dynamic JobID
 dynamic JobTitle
 dynamic CompanyName
 dynamic InterestDate
 dynamic InterestLevel
}

您的属性应使用该界面

public List<ISelectJob> JobList { get; set; }

要创建列表,只需添加.AllActLike< ISelectJob>()

JobList = qry.AllActLike<ISelectJob>().ToList();

这应该可以工作,因为它生成一个轻量级的dlr代理,并将上下文设置为匿名类,因此它认为它始终具有访问权限,这与使用dynamic关键字调用不同.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读