需要一些关于HTML表单的建议

时间:2013-07-25 03:05:12

标签: c# html asp.net sql web

我一直在开发一个HTML页面,它在第二页上显示SQL数据库中的表格,该页面按第一页上的单选按钮排序。我在这里的首选语言是C#,我似乎无法正确构建第二页。目前我正在尝试将IF语句与LINQ结合使用,但它不起作用。任何人都可以建议我如何进行?顺便说一下,我是一个完全的业余爱好者 HTML代码:

     <body>
    <h1>Server Request Form</h1>
    <form id="sortradio" action="searchresults.aspx" method="get">
        <fieldset>
            <legend>Sort Order</legend>
            <input type="radio" id="titledesc" name="sortorder" value="Title Desc" />
            <label for="titledesc">By Title - Descending</label>
            <input type="radio" id="titleasc" name="sortorder" value="Title" />
            <label for="titleasc">By Title - Ascending</label>
            <input type="radio" id="iddesc" name="sortorder" value="Id Desc" />
            <label for="iddesc">By ID - Descending</label>
            <input type="radio" id="idasc" name="sortorder" value="Id" />
            <label for="idasc">By ID - Ascending</label>
            <input type="submit" value="Get Info" />
        </fieldset>
   </form>
</body>


Aspx代码:

<h1>You are sorting by <% Response.Write(Request.QueryString("sortorder"))%>.</h1>
<% 
    Dim SortingOrder = Request.QueryString("sortorder")
%>
<form id="form1" runat="server">
    <asp:GridView ID="GridView1" runat="server" AutoGenerateColumns="False" DataKeyNames="Id" DataSourceID="SqlDataSource1" EmptyDataText="There are no data records to display.">
        <Columns>
            <asp:BoundField DataField="Id" HeaderText="Id" ReadOnly="True" SortExpression="Id" />
            <asp:BoundField DataField="Title" HeaderText="Title" SortExpression="Title" />
            <asp:BoundField DataField="Summary" HeaderText="Summary" SortExpression="Summary" />
            <asp:BoundField DataField="Body" HeaderText="Body" SortExpression="Body" />
            <asp:BoundField DataField="GenreId" HeaderText="GenreId" SortExpression="GenreId" />
            <asp:CheckBoxField DataField="Authorized" HeaderText="Authorized" SortExpression="Authorized" />
            <asp:BoundField DataField="CreateDateTime" HeaderText="CreateDateTime" SortExpression="CreateDateTime" />
            <asp:BoundField DataField="UpdateDateTime" HeaderText="UpdateDateTime" SortExpression="UpdateDateTime" />
        </Columns>
    </asp:GridView>
    <asp:sqldatasource id="SqlDataSource1" runat="server" connectionstring="<%$ ConnectionStrings:Database1.MDFConnectionString1 %>" providername="<%$ ConnectionStrings:Database1.MDFConnectionString1.ProviderName %>" selectcommand="SELECT [Id], [Title], [Summary], [Body], [GenreId], [Authorized], [CreateDateTime], [UpdateDateTime] FROM [Review] ORDER BY @sortorder">
        <Selectparameters>
      <asp:querystringparameter name="sortorder" querystringfield="sortorder" />
        </Selectparameters>
    </asp:SqlDataSource>
    </form>`

1 个答案:

答案 0 :(得分:0)

我很确定你不应该在你的ORDER BY子句中使用参数。

如果是我,我将实现ObjectDataSource并使用服务器端硬编码替代方法动态创建我的ORDER BY子句。如果您沿着这条路走下去,请确保始终使用用户提交的数据参数来保护自己免受SQL INJECTION攻击

如果您还没有解决ObjectDataSource类问题,那么请考虑为每个排序选项实现不同的SQLDataSource。每个都将实现不同的ORDER BY子句。

根据查询参数的值设置DataSourceID。

不确定它是否按原样运行。您可能必须明确设置GridView的DataSource。如果是这样,请记得明确地调用Databind()。