2

文字列にバインドするASP.NETRazorビューがあります。その非常に単純です:

@model string
@{
    Layout = "~/Views/Shared/_Layout.cshtml";
}

Hello, @Model

@using(Html.BeginForm())
{
    <fieldset>
        <label for="name" style="color: whitesmoke">Name:</label>    
        <input type="text" id="name"/>
        <br/>
        <input type="submit" value="Submit"/>
    </fieldset>
}

そして、単純なコントローラー:

[HttpGet]
public ActionResult Index()
{
    object model = "foo";
    return View(model);
}

private string name;
[HttpPost]
public ActionResult Index(string name)
{
    return View();
}

送信ボタンを押すと、インデックス投稿アクションの結果がトリガーされますが、「文字列名」パラメーターがnullです。入力IDがコントローラーのパラメーターの名前と一致するため、Razorは、ビューからこのプロパティをコントローラーに自動的にバインドするのに十分スマートではありませんか?そうでない場合、これをバインドするにはどうすればよいですか?Html.HiddenFor(m => m.Foo)を使用できるプロパティを持つモデルを知っていますが、プロパティがないため、このメソッドを適切に呼び出す方法がわかりません。Html.Hiddenを呼び出して適切に設定できます。 ("name"、 "foo")ですが、ここで値を渡す方法がわかりません。私は次のようなjquery呼び出しを使用できることを知っています:

 @Html.Hidden("name", "$('input[id=name]').val())"); 

これは文字通りjquery文字列を値としてコントローラーに送信します...この時点で何をすべきかわかりません。ありがとう!

4

1 に答える 1

2

プロパティをバインドするのに十分賢いので、アクションパラメータと一致する名前を入力に付けるだけです。

<input type="text" id="name" name="name" />
于 2013-01-23T15:26:33.580 に答える