不知道是我傻還是腦子不轉個,當别人問我頁面傳值的方式的時候我能說出來一大堆,也知道怎麼使用(用服務端控件的時候)
但一直以來我都不知道怎麼使用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,如果是這樣,那我上面就白廢話了。。
來個完整的點的代碼吧:
<body>
<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>
<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來寫了,哈哈。
接收表單資料的頁面背景代碼:
public partial class ShowList : System.Web.UI.Page
{
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嘛。。。)
可偏偏一直以來都轉不過來這個彎……
希望看過這篇文章的同學能夠和我一樣恍然大悟。