前回はActionをこんな感じにしたところで終ってたので、その続き。
1: [AcceptVerbs(HttpVerbs.Post)]
2: public ViewResult YourName(Account account)
3: { 4: return View("OK", account); 5: }
じゃ、以前定義したメソッドも追加したらどうなるのか?
1: [AcceptVerbs(HttpVerbs.Post)]
2: public ViewResult YourName(string Name)
3: { 4: return View("OK"); 5: }
するとこんな例外が発生。
つまり、同名のActionを探し出して、その引数に合わせてPOSTデータを渡してくれる。ってことか。
じゃ、Viewのほうをいぢってみる。NameをName1に。
1: <%@ Page Language="C#" Inherits="System.Web.Mvc.ViewPage" %>
2:
3: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
4: <html xmlns="http://www.w3.org/1999/xhtml">
5: <head runat="server">
6: <title>YourName</title>
7: </head>
8: <body>
9: <% using (Html.BeginForm()) { %> 10: <p>Your Name: <%= Html.TextBox("Name1")%></p> 11: <input type="submit" value="submit" />
12: <% } %>
13: </body>
14: </html>
で、デバッガで確認。
ま、予想通り。
つまり、同名のプロパティを探し出してセットしてからActionを呼んでくれる。ということ。
Reflectionバンザイ!
大量のデータを大量のユーザがほぼ同時にPOSTする場合パフォーマンス的にはどうなるのか?
とか疑問だけどその辺は賢人(がいるだろうから)に譲ることにして。
つづく。