iT邦幫忙

2017 iT 邦幫忙鐵人賽
DAY 15
0
Modern Web

我的30天MVC從零到不知道多少學習筆記系列 第 15

從零開始的MVC開發-View對Controller的回應-ModelBinding

Model Binding
view傳值給controller的第二種方式,也是比較常用的方式
通常view傳資料時,還是傳表單居多
我們先講簡單的Model Binding方式
以下範例

//Action
public ActionResult BasicMB(string name)
{
    ViewBag.Name=name;
    return View();
}
//View
<div>
@using(Html.BwginForm()){
    名字:<input type="text" name="name"/>
    <input type="submit" value="送出" />
}
</div>
<p>Name:@ViewBag.Name</p>

就這麼簡單寫完了~~
要注意的是,回傳到controller的時候它對照的值是name!!不是id
然後重點是要使用Html.BeginForm()幫忙產生含路由資訊的Form
當然也可以改變傳遞給哪個action
只要改寫成Html.BeginForm(string actionName,string controllerName)這樣就可以了

這種Model Binding的方式也可以塞入多筆,例如以下

//Action
public ActionResult BasicMB(string name,string classname)
{
    ViewBag.Name=name;
    ViewBag.ClassName=classname;
    return View();
}
//View
<div>
@using(Html.BwginForm()){
    名字:<input type="text" name="name"/>
    班級:<input type="text" name="classname"/>
    <input type="submit" value="送出" />
}
</div>
<p>Name:@ViewBag.Name</p>
<p>Class:@ViewBag.ClassName</p>

但是用看的也知道,傳的值少的時候沒有問題,一多起來程式碼就會看起來很醜
你的Action後面參數可能會寫了一大串還寫不完
於是MVC提供了一個FormCollection類別來因應這個需求


上一篇
從零開始的MVC開發-View對Controller的回應-RouteData
下一篇
從零開始的MVC開發-View對Controller的回應-ModelBinding(2)
系列文
我的30天MVC從零到不知道多少學習筆記30

1 則留言

0
zyxa9527
iT邦新手 5 級 ‧ 2020-01-31 15:24:14

有兩個地方寫錯

<div></div>
應該要放在{}裡面
(Html.BwginForm())
應該是
(Html.BeginForm())

正確寫法

@using(Html.BeginForm()){
    <div>
    名字:<input type="text" name="name"/>
    班級:<input type="text" name="classname"/>
    <input type="submit" value="送出" />
    </div>
}

雖然已經過很久了哈哈
不過最近在看你的文章
受益良多 感謝~

我要留言

立即登入留言