為什麼我還是看不太懂你的問題 XDDD
如果要根據 SQL 上的資料建立 Select item 的話,只要從資料庫拉完資料並且在後端那邊用 for loop
把資料填充進去不就好了(?)
是指動態生成select option 嗎?
如果是要根據資料庫的資料來產生option
不就是call api後,拿那筆response利用迴圈生成出來嗎?
這兩件事情是有關,但是是分開設定的。
通常實務上是看後端的api格式來決定你這個「迴圈」的實作
要取哪些field、哪些是什麼格式之類的。
也可以用ajax去拉任一層的選單資料,而不是全部寫死或在開網頁時一次讀進所有的階層選單內容,對伺服器和瀏覽器和頻寬而言負擔會比較小
以郵遞區號資料來講,跟用戶對賭,如果用戶只點台北市→萬華區→XX路→幾號到幾號,四個動作就完成,而不是在頁面上漫游,那你節省下來的資料傳輸量就是一大筆
不過,寫MCV習慣的,可能會對ajax感覺...礙手礙腳,畢竟平台上已經有SqlDataSource可用,我不喜歡MCV的理由,就是太多看不見的動作,還有PostBack..我一直都弄不懂..
web framework的MVC一直都不是真正的MVC
我常說微軟最擅長的就是把複雜的變簡單,把簡單的變複雜。有資料格式能交換、能接post、get等http method就能做ajax,經過微軟的包裝就會莫名其妙的變複雜。
PostBack應該是微軟已經幫你處理好封裝接收post的步驟,後面你要實現的邏輯就寫在PostBack裡面而已。也就是收到post後的callback。我沒實際寫.net MVC,不過之前維護webform的時候有用過。
Django一本使用手冊厚度大概微軟.net MVC教學書的1/3,我曾經買過並且想過要來學.net MVC,但看到那個書的厚度我就放棄了。XD
最後,維護過webform的話...
我最討厭哪種一下子前端要寫sql去select、一下子要在後端寫的狀況了。
我連MVC跟MCV都能搞混,哈
我現在在VisualStudio上也完全不用Runat Server的事,少了看不見的動作,就可以更好工作
寫了一個例子 參考看看
前面
<asp:DropDownList ID="dlist_example" runat="server"></asp:DropDownList>
後面
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
select_site();
}
}
protected void select_site()
{
dlist_example.Items.Clear();
string str_sql = "select字串";
DataTable dt_example = new DataTable();
dt_example = //資料庫撈出來的資料;
ListItem list_s = new ListItem();
list_s.Value = "00";
list_s.Text = "請選擇";
dlist_example.Items.Add(list_s);
for (int i = 0; i < dt_example.Rows.Count; i++)
{
ListItem list_l = new ListItem();
list_l.Value = dt_animal.Rows[i]["欄位1"].ToString().Trim();
list_l.Text = dt_animal.Rows[i]["欄位2"].ToString().Trim();
dlist_example.Items.Add(list_l);
}
}