我进行了大量研究,但没有找到解决此问题的方法。
<form id="form1" runat="server">
<div>
<asp:GridView ID="GridView1" runat="server" DataSourceID="SqlDataSource1" EnableModelValidation="True">
</asp:GridView>
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="(SELECT [TID], [CaseID]
,[dtTimeStamp]
,[Site]
,[Dept]
,[LocationDetail]
,[ContactPerson]
,[Phone]
,[contactEmail]
,[ProblemDesc]
FROM [hispcsupport_kb].[dbo].[tblCase]
WHERE CaseID=" Request.QueryString("CaseID"))">
</asp:SqlDataSource>
</div>
</form>
从错误来看,这是导致错误的行。
<asp:SqlDataSource ID="SqlDataSource1" runat="server" ConnectionString="<%$ ConnectionStrings:ConnectionString %>" SelectCommand="(SELECT [TID], [CaseID]
有什么帮助吗?
最佳答案
更改 SelectCommand 以使用参数:Using Parameters with the SqlDataSource Control ,这将具有消除 SQL 注入(inject)攻击机会的额外好处。末尾的“社区添加”部分展示了如何添加带有值的参数。
所以...
<asp:SqlDataSource ID="SqlDataSource1" runat="server"
ConnectionString="<%$ ConnectionStrings:ConnectionString %>"
SelectCommand="(SELECT [TID], [CaseID]
,[dtTimeStamp]
,[Site]
,[Dept]
,[LocationDetail]
,[ContactPerson]
,[Phone]
,[contactEmail]
,[ProblemDesc]
FROM [hispcsupport_kb].[dbo].[tblCase]
WHERE CaseID = @CaseID">
</asp:SqlDataSource>
并在代码隐藏的适当位置:
SqlDataSource1.SelectParameters.Add("@CaseID", DbType.NVarChar, Request.QueryString("CaseID"))
(如果需要,请更改 DbType)。
关于asp.net - 服务器标记的格式不正确。查询字符串和数据绑定(bind),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24437966/