我有两个项目的解决方案:一个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存在并更新。
我该如何解决这个问题?
答案 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方法属性。看到这个答案