none
Parser Error Message: The 'Text' property of 'asp:ListItem' does not allow child objects. RRS feed

  • 問題

  • 作業系統版本-Windows 7/ IIS7
    開發工具版本-Visual Studio 2012
    開發環境-Web Form
    Framework剛從.NET1.1升級至.NET4.5,程式使用精靈轉換,測試時發現,原先在1.1沒問題的程式,出現了上述錯誤,程式是ASPX內include一個inc的檔案,整個inc內容如下:

    <asp:dropdownlist id="ddlDepartureCity" Font-Names="Courier New" runat="server" onchange="ddlCode_onchange(this);">   
      <asp:ListItem Value="0">《請選擇》</asp:ListItem>   
      <asp:ListItem Value="AKU">A-阿克蘇</asp:ListItem>   
      <asp:ListItem Value="AAT">A-阿勒泰</asp:ListItem>   
    </asp:dropdownlist>



     aspx程式碼如下:

    <tr>
      <td height="30" width="60" align="right">出發城市</td>
      <td colspan="3" align="left"><nobr><!--#include virtual="/B000_Portal/Include/ddlDepartureCity.inc"--><asp:TextBox Style="TEXT-TRANSFORM: uppercase" ID="txtDepartureCity" onkeyup="NameMatchCode(this);" runat="server" Font-Size="X-Small" Font-Names="Courier New" Columns="4"></asp:TextBox>
    </nobr>
    <asp:RequiredFieldValidator ID="ddlRequired_ddlDepartureCity" runat="server" Font-Size="X-Small" Font-Names="Courier New" ErrorMessage="請選擇出發城市" ControlToValidate="ddlDepartureCity" Display="None" InitialValue="0"></asp:RequiredFieldValidator>
      </td>
    </tr>

    執行時出現標題的錯誤,後來看了文章將inc檔改成

    <asp:dropdownlist id="ddlDepartureCity" Font-Names="Courier New" runat="server" onchange="ddlCode_onchange(this);">
      <asp:ListItem Value="0" Text="《請選擇》"></asp:ListItem>
      <asp:ListItem Value="AKU" Text="A-阿克蘇"></asp:ListItem>
      <asp:ListItem Value="AAT" Text="A-阿勒泰"></asp:ListItem>
    </asp:dropdownlist>

    錯誤訊息就變了,變成亂碼
    Literal content ('<asp:ListItem Value="0" Text="???豢???></asp:ListItem>') is not allowed within a 'System.Web.UI.WebControls.ListItemCollection'.

    確認過Web.config已加入<globalization requestEncoding="big5" responseEncoding="big5" />
    但當我把

    當我把Text也改成英文時,是可以正確執行的,所以想請問一下,是因為編碼的關係造成「The 'Text' property of 'asp:ListItem' does not allow child objects.」這個錯誤嗎?
    我試過在inc中加入<meta http-equiv="Content-Type" content="text/html; charset=big5" /> 或是page,不過基於inc是被include的,只能有一個page,所以當然是沒效果,因為找不到其他資訊了,所以想請問有沒有誰可以提供一下方向或解決的方法,讓我可以試試看,謝謝!

    ps:這個aspx內有include了三個inc檔,三個內容都有中英文,但是當第一、第二個的value和text都改成英數字時,第三個沒有任何變動也都可以work

    2013年1月16日 上午 03:46

解答

  • 1. 你的檔案是用什麼編碼存的?

    2. 不是不能使用 include,是因為那是不良習慣,用 User control 會比你用 include 好管幾十倍。既然平台都轉換了,就把舊平台上的一些壞習慣也改一改吧...


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 Yvonne0617 2013年1月16日 上午 07:35
    2013年1月16日 上午 06:47
    版主

所有回覆

  • 建議將原INC檔案的內容建立成[Web使用者控制項], 再加到網頁中使用, 會比較方便, 請參考:WebUserControl(Web使用者控制項)
    2013年1月16日 上午 04:15
  • 謝謝建議,不過當初使用INC的原因是因為如果有修改內容,則只需要修改INC檔案更新到主機即可,目前試過解決的方法其中一項就是不要使用INC,直接把DropDownList寫在ASPX頁面就可正常運作,但這樣是否代表.net 4.5就不能使用include嗎?或是可以使用,但內容不能含中文?不好意思,因為我很想了解到底什麼問題造成這個錯誤的?
    2013年1月16日 上午 04:33
  • 1. 你的檔案是用什麼編碼存的?

    2. 不是不能使用 include,是因為那是不良習慣,用 User control 會比你用 include 好管幾十倍。既然平台都轉換了,就把舊平台上的一些壞習慣也改一改吧...


    學習不是查個 Google 套個書上的範例就算了,而是去熟悉了解每個程式碼背後的意義,否則就算學個幾百年,它也不會是你的。

      • 小朱的技術隨手寫:http://www.dotblogs.com.tw/regionbbs/
      • 雲端學堂Facebook: http://www.facebook.com/studyazure

    • 已標示為解答 Yvonne0617 2013年1月16日 上午 07:35
    2013年1月16日 上午 06:47
    版主
  • 1.真是一語道醒夢中人啊,真的是INC的編碼問題,調整成ANSI就可以正確顯示了

    2.那是之後階段要做的事,因為是營運系統修改,所以目前規畫是要以最小的effort完成升級改版

    謝謝啦~

    2013年1月16日 上午 07:38