【问题标题】:"value cannot be null parameter name: key"“值不能为空参数名称:键”
【发布时间】:2014-05-17 06:25:56
【问题描述】:

在调试我正在开发的网站时出现“黄屏死机”。错误消息是“值不能为空。参数名称:键。”我正在尝试将表单视图绑定到网格视图的选定索引。当我在 selectedindexchanged 方法中设置断点时,一切似乎都正确绑定,我可以查看我的 formview 的值,但是当我继续运行它时,我收到上述错误消息。我尝试将 datakeynames 属性添加到 formview 并得到相同的错误消息。我在这里和谷歌搜索并看到了一些结果,但没有一个似乎可以解决或与我的问题相关。

部分代码如下:

protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
    lblMessage.Text = "";
    cbCalled.Visible = true;
    cbError.Visible = true;
    cbVerbal.Visible = true;
    btnSubmit.Visible = true;
    FormView1.Visible = true;
    FormView1.DataBind();
    FormView fv1 = FormView1;
    Label PathCountLabel = (Label)fv1.FindControl("pathcountLabel");
    TextBox PathResult = (TextBox)fv1.FindControl("PathResultLabel");
    if ((PathCountLabel.Text != "1 of 1 biopsies") && (PathCountLabel.Text != "Only 1 Pathology Ordered"))
    {
        PathResult.BackColor = ColorTranslator.FromHtml("#FFFFAA");
    }
}

 <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" 
        Visible="False" DataKeyNames="PatientID" DataSourceID="SqlDataSource1" 
        onselectedindexchanged="GridView1_SelectedIndexChanged" AllowSorting="True" onsorting="GridView1_Sorting">
    <Columns>
        <asp:CommandField ShowSelectButton="True" />
        <asp:BoundField DataField="PatientID" HeaderText="Patient Id" SortExpression="PatientID" />
        <asp:BoundField DataField="LastName" HeaderText="Last Name" 
            SortExpression="LastName" />
        <asp:BoundField DataField="FirstName" HeaderText="First Name" 
            SortExpression="FirstName" />
        <asp:BoundField DataField="PathCount" HeaderText="Path Count" 
            SortExpression="PathCount" />
        <asp:BoundField DataField="DateOfService" DataFormatString="{0:d}" 
            HeaderText="Date of Service" SortExpression="DateOfService" />
    </Columns>
</asp:GridView>
    <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:PathologyConnectionString %>" 
        SelectCommand="SELECT * FROM [PatientDB]">
    </asp:SqlDataSource>
<br />
</div>
<div id="rightCol">
<asp:FormView ID="FormView1" runat="server" DataSourceID="SqlDataSource2" 
    Width="708px">
    <EditItemTemplate>
        LastName:
        <asp:TextBox ID="LastNameTextBox" runat="server" 
            Text='<%# Bind("LastName") %>' />
        <br />
        FirstName:
        <asp:TextBox ID="FirstNameTextBox" runat="server" 
            Text='<%# Bind("FirstName") %>' />
        <br />
        DOB:
        <asp:TextBox ID="DOBTextBox" runat="server" 
            Text='<%# Bind("DOB") %>' />
        <br />
        PhoneNumber:
        <asp:TextBox ID="PhoneNumberTextBox" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        <br />
        ChartNumber:
        <asp:TextBox ID="ChartNumberTextBox" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        <br />
        AccountNumber:
        <asp:TextBox ID="AccountNumberTextBox" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        PathResult:
        <asp:TextBox ID="PathResultTextBox" runat="server" 
            Text='<%# Bind("PathResult") %>' />
        <br />
        PreviousVisitNote:
        <asp:TextBox ID="PreviousVisitNoteTextBox" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' />
        <br />
        PathSlipNote:
        <asp:TextBox ID="PathSlipNoteTextBox" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        PathSlipCheckboxes:
        <asp:TextBox ID="PathSlipCheckboxesTextBox" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <br />
        <asp:LinkButton ID="UpdateButton" runat="server" CausesValidation="True" 
            CommandName="Update" Text="Update" />
        &nbsp;<asp:LinkButton ID="UpdateCancelButton" runat="server" 
            CausesValidation="False" CommandName="Cancel" Text="Cancel" />
    </EditItemTemplate>
    <InsertItemTemplate>
        LastName:
        <asp:TextBox ID="LastNameTextBox" runat="server" 
            Text='<%# Bind("LastName") %>' />
        <br />
        FirstName:
        <asp:TextBox ID="FirstNameTextBox" runat="server" 
            Text='<%# Bind("FirstName") %>' />
        <br />
        DOB:
        <asp:TextBox ID="DOBTextBox" runat="server" 
            Text='<%# Bind("DOB") %>' />
        <br />
        PhoneNumber:
        <asp:TextBox ID="PhoneNumberTextBox" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        <br />
        ChartNumber:
        <asp:TextBox ID="ChartNumberTextBox" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        <br />
        AccountNumber:
        <asp:TextBox ID="AccountNumberTextBox" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        PathResult:
        <asp:TextBox ID="PathResultTextBox" runat="server" 
            Text='<%# Bind("PathResult") %>' />
        <br />
        PreviousVisitNote:
        <asp:TextBox ID="PreviousVisitNoteTextBox" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' />
        <br />
        PathSlipNote:
        <asp:TextBox ID="PathSlipNoteTextBox" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        PathSlipCheckboxes:
        <asp:TextBox ID="PathSlipCheckboxesTextBox" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <br />
        <asp:LinkButton ID="InsertButton" runat="server" CausesValidation="True" 
            CommandName="Insert" Text="Insert" />
        &nbsp;<asp:LinkButton ID="InsertCancelButton" runat="server" 
            CausesValidation="False" CommandName="Cancel" Text="Cancel" />
    </InsertItemTemplate>
    <ItemTemplate>
        Last Name:
        <asp:Label ID="LastNameLabel" runat="server" Text='<%# Bind("LastName") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; First Name:
        <asp:Label ID="FirstNameLabel" runat="server" Text='<%# Bind("FirstName") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; DOB:
        <asp:Label ID="DOBLabel" runat="server" Text='<%# Bind("DOB") %>' />
        &nbsp;&nbsp;
        <br />
        <br />
        Phone Number:
        <asp:Label ID="PhoneNumberLabel" runat="server" 
            Text='<%# Bind("PhoneNumber") %>' />
        &nbsp;&nbsp;&nbsp;&nbsp; Chart Number:
        <asp:Label ID="ChartNumberLabel" runat="server" 
            Text='<%# Bind("ChartNumber") %>' />
        &nbsp;&nbsp;&nbsp; Account Number:
        <asp:Label ID="AccountNumberLabel" runat="server" 
            Text='<%# Bind("AccountNumber") %>' />
        <br />
        <br />
        Biopsy Location:
        <asp:Label ID="BiopsyLocationLabel" runat="server" Text='<%# Bind("BiopsyArea") %>'></asp:Label>
        <br />
        <br />
        Path Result:
        <br />
                    <asp:TextBox ID="PathResultLabel" runat="server" 
            Text='<%# Bind("PathResult") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="250" />

        <br />
        <br />
        Previous Visit Note:<br />
        <asp:TextBox ID="PreviousVisitNoteLabel" runat="server" 
            Text='<%# Bind("PreviousVisitNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="250" />
        <br />
        <br />
        Pathology Lab Note:<br />
        <asp:TextBox ID="txtPathNote" runat="server" 
            Text='<%# Bind("PathNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="150" />
        <br />
        <br />
        Note to DA/DT:<br />
        <asp:TextBox ID="txtDADTNote" runat="server" 
            Text='<%# Bind("DADTNote") %>' ReadOnly="True" TextMode="MultiLine" Width="600" Height="150" />
        <br />
        <br />
        Path Slip Note:<br />
        <asp:Label ID="PathSlipNoteLabel" runat="server" 
            Text='<%# Bind("PathSlipNote") %>' />
        <br />
        <br />
        Path Slip Checkboxes:
        <br />
        <asp:Label ID="PathSlipCheckboxesLabel" runat="server" 
            Text='<%# Bind("PathSlipCheckboxes") %>' />
        <br />
        <br />
        Patient Message:<br />
        <ASPNetSpell:SpellTextBox ID="txtPatientMessage" runat="server" TextMode="MultiLine" 
    DictionaryLanguage="English (International), English (Medical)" Height="88px" 
    Width="597px" Text='<%# Bind("PatientMessage") %>' onKeyPress="return macro(event);"></ASPNetSpell:SpellTextBox>
    <br />
    <asp:Label ID="pathcountLabel" runat="server" Text = '<%# Bind("PathCount") %>' Visible="false"></asp:Label>
    </ItemTemplate>
</asp:FormView>
<asp:SqlDataSource ID="SqlDataSource2" runat="server" 
    ConnectionString="<%$ ConnectionStrings:PathologyConnectionString %>" 

    SelectCommand="SELECT [LastName], [FirstName], [DOB], [PhoneNumber], [ChartNumber], [AccountNumber], [PathResult], [PreviousVisitNote], [PathSlipNote], [PathSlipCheckboxes], [PathNote], [DADTNote], [BiopsyArea], [PatientMessage], [PathCount] FROM [PatientDB] WHERE ([PatientID] = @PatientID)">
    <SelectParameters>
        <asp:ControlParameter ControlID="GridView1" Name="PatientID" 
            PropertyName="SelectedValue" Type="Int32" />
    </SelectParameters>
</asp:SqlDataSource>

我已经从 YSOD 添加了堆栈跟踪

Server Error in '/' Application.
--------------------------------------------------------------------------------


Value cannot be null.
Parameter name: key 
  Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code. 

 Exception Details: System.ArgumentNullException: Value cannot be null.
Parameter name: key

Source Error: 


 An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.  

Stack Trace: 



[ArgumentNullException: Value cannot be null.
Parameter name: key]
   System.Collections.Generic.Dictionary`2.FindEntry(TKey key) +10627293
   System.Collections.Generic.Dictionary`2.TryGetValue(TKey key, TValue& value) +12
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetLiteralTraceData(LiteralControl literal, TraceData& data) +97
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.GetTraceData(Object renderedObject) +421
   Microsoft.VisualStudio.Web.PageInspector.Runtime.WebForms.SelectionMappingRenderTraceListener.EndRendering(TextWriter writer, Object renderedObject) +79
   System.Web.UI.RenderTraceListenerList.EndRendering(TextWriter writer, Object renderedObject) +58
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +142
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   ASPNetSpell.SpellTextBox.Render(HtmlTextWriter writer) +6035
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.TableCell.RenderContents(HtmlTextWriter writer) +57
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.WebControls.FormViewRow.Render(HtmlTextWriter writer) +38
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.WebControls.Table.RenderContents(HtmlTextWriter writer) +211
   System.Web.UI.WebControls.WebControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.WebControls.WebControl.RenderContents(HtmlTextWriter writer) +10
   System.Web.UI.WebControls.FormView.Render(HtmlTextWriter writer) +86
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.HtmlControls.HtmlForm.RenderChildren(HtmlTextWriter writer) +102
   System.Web.UI.HtmlControls.HtmlContainerControl.Render(HtmlTextWriter writer) +32
   System.Web.UI.HtmlControls.HtmlForm.Render(HtmlTextWriter output) +53
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.HtmlControls.HtmlForm.RenderControl(HtmlTextWriter writer) +40
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Control.Render(HtmlTextWriter writer) +10
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Control.RenderChildrenInternal(HtmlTextWriter writer, ICollection children) +128
   System.Web.UI.Control.RenderChildren(HtmlTextWriter writer) +8
   System.Web.UI.Page.Render(HtmlTextWriter writer) +29
   System.Web.UI.Control.RenderControlInternal(HtmlTextWriter writer, ControlAdapter adapter) +57
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer, ControlAdapter adapter) +100
   System.Web.UI.Control.RenderControl(HtmlTextWriter writer) +25
   System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +1386




--------------------------------------------------------------------------------
Version Information: Microsoft .NET Framework Version:4.0.30319; ASP.NET Version:4.0.30319.18446  

【问题讨论】:

  • 我从您发布的代码中看不到任何明显的东西。可以添加 YSOD 的屏幕截图吗?是否有堆栈跟踪或任何可以帮助人们与您一起调试的东西?您是否有任何服务器端代码 formview 事件?
  • 我添加了堆栈跟踪信息,除了我上面列出的关于从 formview 获取一些信息的内容之外,我没有任何与 formview 相关的服务器端代码。
  • 有很多代码要阅读。你能缩小你的问题范围吗?

标签: c# asp.net gridview formview


【解决方案1】:

我尝试了你所说的一切,但没有奏效。 但是,我找到了一种解决方法,由于某种我不知道的原因,它起作用了。 我将此添加到我的 web.config 文件中:

 <add key="PageInspector:ServerCodeMappingSupport" value="Disabled" />

它对我有用:D

【讨论】:

  • 在浪费了半天的时间解决这个问题后,终于从这里得到了..太好了,谢谢伙计..!!!
  • 这不是一个合适的解决方案。我刚刚面对这个。我所做的是查看我最后的更改,尤其是错误引发的类。于是我开始截取代码片断重新编译,看看是否仍然出现错误。几秒钟后,我在 XAML 文件中发现了一个非法字符,因此我将其删除,然后错误完全消失了。
【解决方案2】:

这可能是由于启用了 Visual Studio 中的浏览器链接所致。禁用它:

http://www.asp.net/visual-studio/overview/2013/using-browser-link#disabling

【讨论】:

  • 天啊,这个复选框给我带来了很大的压力,而且没有为修补程序设定最后期限。谢谢!
  • 是的,这就是答案!
【解决方案3】:

尝试关闭 Visual Studio 并访问同一页面。它应该工作。我也面临同样的例外。如果您看到异常,则它指向导致问题的 Visual Studio 的 PageInspector。不知道为什么 VS 会搞乱应用程序加载。

【讨论】:

    【解决方案4】:

    我的建议是测试您的数据。您似乎正在尝试将空值绑定到控件。确保从数据库返回的 DataSet 中没有空值。它应该是您的第一个停靠港。

    【讨论】:

    • 我检查了所有返回的数据,没有空值。
    【解决方案5】:

    我为 formview1 刷新了 sqldatasource2,当我这样做时,我可以刷新 formview1 的架构和键。当我这样做时,它起作用了,所以我重建了表单视图以使其看起来像我需要的那样,然后它再次停止工作。我确定它来自 aspnetspell:spelltextbox 控件。我下载了最新版本,现在可以使用了。

    【讨论】:

    • 这不应该是公认的答案。问题完全与 Visual Studio 做错事有关,与 SqlDataSource 或任何其他 Web 窗体控件无关。
    【解决方案6】:

    我刚刚遇到了这个问题,对我来说,它是在从后面的代码中添加 LiteralControl 时发生的。 Text 属性为空,这会扰乱 PageInspector,因此只需将其设置为 string.Empty。

    我建议不要仅仅为了修复此类错误而关闭功能,因为当不同机器上的不同开发人员继承您的代码时,他们将遇到完全相同的问题。

    【讨论】:

      【解决方案7】:

      只需清理并重建对我有用的解决方案 :)

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-01-16
        • 2016-05-14
        • 2015-11-05
        • 2019-05-26
        相关资源
        最近更新 更多