0

リピーターを埋めるときにNullReferenceExceptionが発生します。一部の製品の機能は空です。例外を回避するためにUrlDecode()およびkill()メソッドを使用するときにIsNullControl()メソッドを使用しましたが、それでもエラーが発生します。

   <asp:Repeater ID="rptProducts" runat="server">
        <ItemTemplate>
                <div>
                    <%# Eval("ProductName")%>
                </div>
                <div>
                    <%# kill(Server.UrlDecode(IsNullControl(Eval("ProductFeature").ToString())))%>
                </div>
        </ItemTemplate>
    </asp:Repeater>

    try
    {
        ProductsDataContext pdc = new ProductsDataContext();
        var query = from p in pdc.Products
                    select p;

        rptProducts.DataSource = query;
        rptProducts.DataBind();
    }
    catch (Exception ex)
    {
        Response.Write(ex.Message);
    }

    public static string kill(string val)
    {
        val = val.Replace("<ul>", " ");
        val = val.Replace("<li>", " ");
        val = val.Replace("</li>", "<br/>");
        val = val.Replace("</ul>", " ");
        return val.ToString();
    }

    public static string IsNullControl(string val)
    {
        string space = " ";
        if (string.IsNullOrEmpty(val))
        {
            val = space;
        }
        return space;
    }
4

2 に答える 2

2

このコードフラグメントで null をチェックする前に、最初にフィールドを文字列に変換しています -->Eval("ProductFeature").ToString()

于 2012-05-25T15:00:12.457 に答える
1

以下のようにnullを確認してください

<%#kill(Server.UrlDecode(Eval("ProductFeature")?? String.Empty))%>

または、以下のようにクエリを変更できます

 var query = from p in pdc.Products
             select p
             where p!= null;
于 2012-05-25T15:26:23.447 に答える