2012-12-08 28 views
0

我在做一个电影评论网站。 ShowMovie.aspxα-ID =在.aspx中获取ID

我上无法从URL获得标识在.aspx页面中

<table border="1" cellpadding="1" cellspacing="1" style="width: 500px;"> 
       <tbody> 
        <asp:Repeater ID="Repeater1" runat="server" DataSourceID="SqlDataSource1"> 
         <ItemTemplate> 
          <tr> 
           <td> 
            <asp:Label ID="lblType" runat="server" Text='<%# Eval("Comment") %>'></asp:Label> 
           </td> 
          </tr> 
         </ItemTemplate> 
        </asp:Repeater> 
        <asp:SqlDataSource ID='SqlDataSource1' runat='server' ConnectionString='<%$ ConnectionStrings:con %>' 
         SelectCommand='SELECT [Comment] FROM [Comment] where [MovieId]=<%= Request.QueryString("Id") %>'> 
        </asp:SqlDataSource> 
       </tbody> 
      </table> 

,但我可以在.aspx.cs页面获取标识

protected void Page_Load(object sender, EventArgs e)  { 
     Id = Request.QueryString["Id"]; 
     String types = ""; 
     con = new Connect().Connection(); 
     cmd = new SqlCommand("Select * from Movie where Id=" + Id, con); 
     dr = cmd.ExecuteReader(); 
     dr.Read(); 
     lblTitle.Text = dr["Title"].ToString(); 
     lblDescription.Text = dr["Description"].ToString(); 
     Picture.ImageUrl = dr["Picture"].ToString(); 
     dr.Close(); 

}

这是错误 “<”附近的语法不正确。 异常详细信息:System.Data.SqlClient.SqlException:“<”附近的语法错误。

堆栈跟踪: [SQLEXCEPTION(0x80131904):附近有语法错误<“。]

+0

在那里你定义的ID? – Adil

+0

你有试过吗? (硬括号) <%= Server.HTMLEncode(的Request.QueryString [ “ID”])%> 参考: http://stackoverflow.com/questions/9725385/getting-a- url-parameter-into-asp-net-label –

+0

它位于ShowMovie.aspx页面。 Id来自Default.aspx "> tayfun

回答

1

SelectCommand不支持表达式。无论如何,你应该使用你的ID参数,以避免SQL注入。一个好的解决办法是定义你的SqlDataSource是这样的:

<asp:SqlDataSource ID='SqlDataSource1' runat='server' 
ConnectionString='<%$ ConnectionStrings:con %>' 
SelectCommand='SELECT [Comment] FROM [Comment] where [MovieId][email protected]'> 
    <SelectParameters> 
     <asp:Parameter Name="Id" Type="Int32" DefaultValue="0" /> 
     </SelectParameters> 
</asp:SqlDataSource> 

然后在页面加载:

SqlDataSource1.SelectParameters["Id"].DefaultValue = Request.QueryString["Id"]