asp.net
  • vb.net
  • 2010-09-29 52 views 2 likes 
    2

    我使用DataGrid和我有一個<asp:TemplateField>我已經通過了一些參數,它的代碼是如下:VB.NET查詢字符串

    <asp:TemplateField HeaderText="Download"> 
        <ItemTemplate> 
         <asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%#"~/logout.aspx?ID="+Eval("ID")+"&category=mobile"%>'></asp:LinkButton> 
        </ItemTemplate> 
    </asp:TemplateField> 
    

    我有數字字段(ID),我需要通過URL發送我試圖發送String類型的數據和它工作正常,但同時我送數字類型(ID),我面對這個錯誤字符串

    轉換「〜/ logout.aspx?ID =」鍵入「 Double'無效

    我知道我需要在Eval("ID")附近修改語法。我應該如何發送查詢字符串中的數字數據?

    感謝

    回答

    3
    <asp:TemplateField HeaderText="Download"> 
           <ItemTemplate> 
           <asp:LinkButton ID="lnkname" runat="server" Text="Download" PostBackUrl='<%# String.Format("~/logout.aspx?ID={0}&category=mobile", Eval("ID")) %>'></asp:LinkButton> 
           </ItemTemplate> 
           </asp:TemplateField> 
    
    +0

    由於它工作正常..... – 2010-09-29 16:58:33

    +0

    沒問題。我認爲問題在於Eval()函數不輸出字符串。你試圖添加一個字符串和這個值一起導致一個錯誤。我認爲另一種解決方案可能是將Eval(「ID」)。toString(),但我認爲String.Format()看起來很整齊:) – Curt 2010-09-30 08:13:39

    2

    <%#語法應該只用於評估一個特定的數據項。您正嘗試在<%#中建立整個字符串,因爲大部分數據都是靜態的,所以這不是必需的。

    只是一種預感,爲什麼你所得到的錯誤在ID具體情況是因爲你擁有整個項目在你的綁定<%#它使用Eval語句的類型弄清楚整個什麼stringdouble信息部分應該是。在你的情況下,它正在查看Eval("ID")的值,並知道它是一個double,然後它期望綁定結果爲double。問題是你連接了stringdouble,所以想要返回一個string,根據Eval的預期類型,這是無效的。

    當您的數據發送到querystring它是一個string。當你使用QueryString對象解析它時,它也會返回一個字符串。你可以發佈解析關閉querystring的代碼嗎?

    如果您的代碼沒有檢查空值或正在執行TryParse那麼您可能有錯誤。請記住,任何人都可以操縱這些數據,因此您應該驗證它是否屬於正確類型。

    如:

    Dim yourValue As Double = 0 
    If Double.TryParse(Request.QueryString("id"), yourValue) = False Then 
        ShowError("Invalid id supplied.") 
        Return 
    End If 
    
    相關問題