6

我在本地 iis 上发布我的项目时没有任何警告,并且它可以正常工作(localhost/[myprojectName])。所以,我用可爱的 ftp 将它们上传到服务器。但是在服务器中,我的所有文件都出现了此错误,例如 [tableName].[filedName]:

在所选数据源上找不到名为“ConfirmStatuse.Name”的字段或属性

这是我的代码:

<asp:GridView ID="ordergv" runat="server" DataKeyNames="Id" AutoGenerateColumns="False" DataSourceID="SummaryOfOrderSrc" AllowSorting="True">
    <Columns>
        <asp:CommandField SelectText="select" ShowSelectButton="True" ButtonType="Button"/>
        <asp:BoundField DataField="OrderId"  />
        <asp:BoundField DataField="ConfirmStatuse.Name"  />
        <asp:BoundField DataField="OrderStatuse.Name"/>
        <asp:BoundField DataField="PaymentStatuse.Name"/>
        <asp:BoundField DataField="ShipmentStatuse.Name" />
        <asp:TemplateField >
            <ItemTemplate>
          <asp:Label ID="CreatedDateLabel" runat="server" Text='<%# GetPersianDate( Eval("CreatedDate")) %>' /></ItemTemplate>
        </asp:TemplateField>
    </Columns>
</asp:GridView>

<asp:LinqDataSource ID="SummaryOfOrderSrc" runat="server" ContextTypeName="Ahooratech.DAL.DataClasses1DataContext" EntityTypeName="" OrderBy="CreatedDate desc" TableName="Orders">
</asp:LinqDataSource>

我在本地 iis 和服务器上检查我的项目的大小。它们都相同(8,459,009 字节)

所以这意味着我使用相同的数据库和相同的文件来运行我的应用程序以在本地和服务器上运行。那么为什么我只在服务器中收到此错误?

这里唯一的区别是 iis 版本,我认为我的服务器 iis 版本是 7.0。但是我得到这个错误重要吗?!!!我不这么认为。我真的很困惑。

(我的本地项目和服务器项目使用相同的连接字符串)。

编辑:我在另一台主机上发布项目并且它有效!但它还不能在我原来的服务器上工作。

4

4 回答 4

5

这与此处描述的问题相同 -绑定到导航属性导致“仅在 IIS 6 中未在所选数据源上找到名为 'XX' 的字段或属性”

这似乎是 BoundField 控件元素的问题。正如用户 Anant在上面链接的文章中提供的答案中所建议的那样,您可以将 BoundField 转换为 TemplateField 并且它将起作用(在您的示例中使用“OrderStatuse.Name”)。该解决方案对我有用。

虽然这确实不能解释为什么IIS6 不能以这种方式支持 BoundField。

令人难以置信。

于 2014-02-06T15:40:38.480 回答
3

我发现我服务器上的 IIS 版本是 6。但我的本地是 7.5。我使用 iis 7.5 在另一台服务器上发布我的项目并且它可以工作

解决方案1:我创建了一个这样的 summaryOfOrder :

class summaryOfOrder
    {
        public int Id { get; set; }
        public int OrderId { get; set; }
        public string ConfirmStatusName { get; set; }
        public string OrderStatusName { get; set; }
        public string PaymentStatusName { get; set; }
        public string ShippingStatusName { get; set; }
        public string CreatedDate { get; set; }


    }

和改变

<asp:BoundField DataField="ConfirmStatuse.Name"  />

<asp:BoundField DataField="ConfirmStatusName"  />

并将类绑定到网格

gv.datasource = mySummryOfOrder; 
gv.databind();

并初始化此类型的列表并以编程方式将其绑定到网格

更新解决方案2转换

asp:BoundField

asp:TemplateField 和使用

<%# Eval("Worker.FullName")%>
于 2013-06-15T06:58:49.277 回答
2

我已经在所选查询中添加了那些绑定字段。

错误信息:

在所选数据源上找不到名为“tax_percentage”的字段或属性

解决方案:

我没有在选择查询中选择 tax_percentage,所以出现了上述错误消息。只需tax_percentage在我的查询中选择。

于 2016-01-13T03:56:40.093 回答
2

如果您的数据源是对象列表,请确认您的类的属性已定义为公共的,如下所示:

class YourClass
{
    public int Id { get; set; }
    public string Name{ get; set; }
}

对面:

class YourClass
{
    private int Id { get; set; }
    private string Name{ get; set; }
}

问候

于 2016-02-04T16:19:27.410 回答