1

我使用 .net framework 4 和 petapoco 在 dnn 中创建了我的第一个 Web API 模块。这是我的代码:

[TableName("TblBPMProcess")]
[PrimaryKey("ProcessID", AutoIncrement = true)]
[Cacheable("ProcessInfo", CacheItemPriority.Default, 20)]
[Scope("ModuleId")]
public class ProcessInfo
{
    public int ProcessID { get; set; }

    public int ModuleID { get; set; }

    public string DynamicModuleID { get; set; }

    public string ProcessCaption { get; set; }

    public int Availability { get; set; }

    public int CreatedBy { get; set; }

    public string CreatedDate { get; set; }

    public string ModifiedDate { get; set; }        
}

在控制器中:

public IEnumerable<ProcessInfo> GetList(int ModuleID)
{
    IEnumerable<ProcessInfo> item;
    using (IDataContext ctx = DataContext.Instance())
    {
        var rep = ctx.GetRepository<ProcessInfo>();
        item = rep.Get(ModuleID);
    }
        return item;
}

在代码隐藏中:

protected void Page_Load(object sender, EventArgs e)
{
    var cnt = new StateController();
    IEnumerable<StateInfo> lst = cnt.GetList(1);
    rptHostList.DataSource = lst;
}

在 Page_Load 中,lst 返回 null。我仔细检查了所有列和表名。既没有错误也没有数据。任何想法?

4

2 回答 2

0

据我了解,该方法可能会返回IEnumerable带有项目或null(如果没有项目)。

所以你需要做的就是检查返回的值是否不为空:

protected void Page_Load(object sender, EventArgs e)
{
    var cnt = new StateController();
    IEnumerable<StateInfo> lst = cnt.GetList(1);

    if (lst != null)
    {
        rptHostList.DataSource = lst;
    }
}
于 2013-11-09T06:32:41.933 回答
0

[Scope("ModuleId")]中,我相信放入当前的 ModuleId 而不是您传入的那个。

你可能想把它注释掉或改变它,看看它是否有效。它可能会让人感到困惑。

于 2013-11-11T20:55:46.773 回答