【问题标题】:Invalid expression term 'try'无效的表达式术语“尝试”
【发布时间】:2019-06-10 16:30:56
【问题描述】:

PolicyPersonIDPolicyMemberID 将是GetInsuranceCompanyName() 中的参数。但PolicyPersonIDPolicyMemberID 取决于绑定到网格视图的对象列表。如果是策略成员列表,PolicyMemberID 将在那里,PolicyPersonID 将不在那里,反之亦然。

我尝试了if 语句,但由于它是PolicyPersonIDPolicyMemberIDif 语句实际上不起作用。

<div class="row">
    <div class="col-md-12">
        <asp:GridView ID="gvCustomerView" runat="server" AllowPaging="True" AllowSorting="true" AutoGenerateColumns="False" CssClass="table table-striped table-bordered table-hover"
            OnPageIndexChanging="gvCustomerView_PageIndexChanging" PageSize="10">
            <Columns>
                <asp:TemplateField HeaderText="Customer Name">
                    <ItemTemplate>
                        <asp:Label ID="lblCustomerName" runat="server" Text='<%# GetCustomerName(Eval("InvoiceMasterID")) %>' ForeColor="Black"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:BoundField DataField="MembershipNo" HeaderText="Membership Number" />

                <asp:TemplateField HeaderText="Insurance Company">
                    <ItemTemplate>
                        <asp:Label ID="lblInsuranceCompany" runat="server" Text='<%# try { GetInsuranceCompany(Eval("PolicyPersonID")); } catch (Exception) { GetInsuranceCompany(Eval("PolicyMemberID")); } %>' ForeColor="Black"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>

                <asp:BoundField DataField="PolicyNumber" HeaderText="Policy Number" />

                <asp:TemplateField HeaderText="Currency Type And Rate">
                    <ItemTemplate>
                        <asp:Label ID="lblCurrencyTypeAndRate" runat="server" Text='<%# GetCurrencyTypeAndRate(Eval("InvoiceMasterID")) %>' ForeColor="Black"></asp:Label>
                    </ItemTemplate>
                </asp:TemplateField>
            </Columns>
        </asp:GridView>
    </div>
</div>

如果有人可以解释这个错误是什么意思:

Text='<%# try { GetInsuranceCompany(Eval("PolicyPersonID")); } catch (Exception) { GetInsuranceCompany(Eval("PolicyMemberID")); } %>'

【问题讨论】:

  • 你没有把这段代码放在代码后面有什么原因吗?
  • 我不认为你可以尝试内部数据绑定,请你尝试进入你的函数 GetInsuranceCompany..
  • @bestinamir 我并没有真正评估所有代码,但我认为 try/catch 不会像 OP 那样工作。
  • 后面的代码有GetInsuranceCompanyName()方法的逻辑。保险公司根据 PolicyMemberID 或 PolicyPersonID 设置

标签: c# asp.net webforms


【解决方案1】:

&lt;%# 标记评估一个单个表达式。它无法处理 try/catch 块或其他复杂语句。

我会改为在执行此逻辑的代码隐藏中创建一个 GetInsuranceCompanyOrDefault 方法(名称由您决定)并从标记中调用 that 方法。

作为旁注,抛出异常是一种昂贵的分支方式 - 如果有办法知道GetInsuranceCompany 是否会失败在调用该方法之前,这将是一种更便宜的确定方法使用哪个输入。

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-06-22
  • 2020-09-23
  • 2014-06-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多