无法加载类型' EDMNearClass.ProductRepository.DesTagliaP'

时间:2013-06-06 09:10:29

标签: c# asp.net entity-framework web-applications model-binding

我有两个项目的解决方案:一个webApplication和一个带有edmx和所有实体框架逻辑的ClassLibrary。这工作正常,但如果我尝试使用强类型数据,则会引发问题。

在后面的代码中我使用了这个函数:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.ModelBinding;
using System.Web.UI;
using System.Web.UI.WebControls;
using EDMNearClass;

namespace WebSite
{
    public partial class dettaglio_prodotto : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            //Response.Write(Page.RouteData.Values["DESCRIZIONE"]);
        }

        public IQueryable<ProductRepository.DesTagliaP> GetProduct_Taglie([RouteData("Id")] string itemId)
        {
            decimal ProdId = decimal.TryParse(itemId, out ProdId) ? ProdId : 0;
            ProductRepository pr = new ProductRepository();
            var myEnts = pr.taglieProdottiDesGetbyUId(1,ProdId).AsQueryable();
            return myEnts;
        }
    }
}

在aspx部分中,我使用以下代码:

<asp:Repeater ID="rpTaglie" runat="server" ItemType="EDMNearClass.ProductRepository.DesTagliaP" SelectMethod="GetProduct_Taglie">
    <ItemTemplate>
        <div class="quanitybox">
            <label for="qty"><%# Item.Codice %></label>
            <asp:TextBox runat="server" ID="quantita" CssClass="input-text qty" />
        </div>
    </ItemTemplate>
</asp:Repeater>

Intellisense工作并帮助我选择EDMNearClass.ProductRepository.DesTagliaP的属性,但在运行时我收到错误。 如果我使用Eavl("Codice")并删除ItemType="EDMNearClass.ProductRepository.DesTagliaP",则一切正常。

我检查了/ bin文件夹,EDMNearClass.dll EDMNearClass.pdb存在并更新。

我该如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

只是一个猜测 - 但我可以想象转发器绑定不喜欢IQueryable。我会绑定到IEnumerable或只是一个List。是否会像以下工作一样 - 不仅仅是为了给你一个想法。

 public List<ProductRepository.DesTagliaP> GetProduct_Taglie([RouteData("Id")] string itemId)
        {
            decimal ProdId = decimal.TryParse(itemId, out ProdId) ? ProdId : 0;
            ProductRepository pr = new ProductRepository();
            var myEnts = pr.taglieProdottiDesGetbyUId(1,ProdId).ToList();
            return myEnts;
        }

修改

我还会尝试将转发器显式绑定到集合,而不是使用select方法属性。看到这个答案

Using ItemType for strongly typed repeater control?