けさらんぱさらん

方向性は定めず、ただ思いつくままに

Nancy試してみた

ASP.NETのNancyというフレームワークがあるとのことでちょっと試してみました。
こちらを見ていただければ概要は分かるかなっと思うので
ちょっと嵌ったところをば

嵌ったのはASP.NET MVCと同様にPost時(まあPostじゃなくてもいいけど)のモデルバインドを自動でやる方法です。
公式にも書いてあるので嵌るなって話ですけどね
ちゃんと見てなかったんじゃよ

まずモデル作ります。

public class Employee
{
  public string Name { get; set; }
  public int Age { get; set; }
}

適当です。


で、Controllerになる部分を作る

Get["create/"] = _ =>
{
    return View["Create"];
};

Post["create/"] = _ =>
{
    var emp = this.Bind<Employee>();
    return View["Index"];
};

Postの方に注目、Bindというメソッドを使ってバインドするんですが
VisualStudioさんがそんなメソッドないよんって言います。
なぜに・・・ここでしばし悩む

あっ・・・拡張メソッドか!

using Nancy.ModelBinding;

これが必要なのでした。


そしてView

<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
    <title></title>
</head>
<body>
    <form action="/create" method="post">
        <p>
            名前:<input type="text" id="name" name="Name" />
        </p>
        <p>
            年齢:<input type="text" id="age" name="Age" />
        </p>
        <input type="submit" value="Post" />
    </form>
</body>
</html>

ここでまた嵌る
name属性でバインドするんですが、MVCと違ってクラス名.プロパティ名じゃない!


これで
f:id:cer1974:20130514001044p:plain
こうなる
ちゃんとバインドされてますねん♪