使用Input控件完成站内搜索功能
不知道是我傻还是脑子不转个,当别人问我页面传值的方式的时候我能说出来一大堆,也知道怎么使用(用服务端控件的时候)
但一直以来我都不知道怎么使用input传值,今天晚上没啥事,试了一交,突然想起来一个很重要的东西,那就是input的name属性,我咋就把你忘了呀!
例如:
<input type="text" name="txtWords"/>
<input type="submit" value="搜索"/>
哎杯具啊~~ 我不知道有多少人和我一样,把这些东西忘掉了,一直都不知道怎么用客户端控件开发asp.net 因为已经习惯了服务端控件给我们带来的方便。
然后通过form表单提交:Method="post" 提交方式. action="Default.aspx" 提交到哪里.
然后在Default.aspx的页面中使用 Request.Form["txtWords"]; 来获取。
别问为什么是txtWords,如果是这样,那我上面就白废话了。。
来个完整的点的代码吧:
<form id="form1" method="post" action="ShowList.aspx">
<div class="column">
请输入搜索内容:
<input id="txtWords" name="txtWords" type="text" /><input id="btnSearch" type="submit"
value="搜索" /></div>
<div class="column">
<ul>
<asp:ListView ID="objListView" runat="server">
<ItemTemplate>
<li><span><%#Eval("id") %></span>
<span><%#Eval("saleName") %></span>
<span><%#Eval("price") %></span>
<span><%#Eval("count") %></span>
<span><%#Eval("amount") %></span>
<span><%#Eval("InDate") %></span></li>
</ItemTemplate>
</asp:ListView>
</ul>
</div>
</form>
</body>
在这个过程中我发现一个挺有意思的东西,以前一直都没发现,就是ListView在没有runat="server"的时候还可以使用,编译不会报错。GridView就不行,像TextBox ,Button等控件都不行。
也许你可能会说我吃饱了没事干,撑着了写这个东西,因为我"讨厌"ViewState,它生成的字符串太让人纠结了. 没有还不习惯,有吧看着还闹心,只好用传统的Html来写了,哈哈。
接收表单数据的页面后台代码:
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
string Words = Request.Form["txtWords"];
objListView.DataSource = DAL.GetSearch(Words);
objListView.DataBind();
}
}
}
这样就OK了,其实只要我们拿到表提交过来的值,后面该怎么开发就怎么开发,和开发WebForm一样(本来就是WebForm嘛。。。)
可偏偏一直以来都转不过来这个弯……
希望看过这篇文章的同学能够和我一样恍然大悟。