0

フォーム内にテキストボックスがあります。

[意見]

<%=html.textbox("name") %>

[コントローラ]

 Index(string name)
    {
    name = "something";
    return View();
    }

On Form Submit この場合、ViewData を送信せずにテキストボックスの値は維持されますが、値「何か」は設定されていません。

しかし、アクションを [Controller] に変更すると

Index()
{
string name="something";
return view();
}

値は保持されません。

そのパラメータで実際に起こっていること。

4

3 に答える 3

0

コントローラーで html.textbox("name") のデータを設定する場合は、ViewData["name"] = "something" を使用します。

于 2009-09-25T14:04:29.253 に答える
0

あなたの質問はあまり明確ではなく、コード例は実際にはViewDataまたはビューモデルに何も追加していません-これはあなたがやろうとしていることのショットです...

フォームに再入力する必要があり、ビューが厳密に型指定されていると仮定すると、次のようになります。

public ActionResult Index(String name)
{
    MyModel model = new MyModel;
    model.Name = name;
    ViewData.Model = model;
    return View();
}

同じ名前のビュー内のテキストボックスには、モデルから値が自動入力されます

<%= html.textbox("Name") %>

フォームを投稿すると、次のようにモデル オブジェクトがコントローラーに投稿されます。

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(MyModel model)
{
    // do something with the model        
    ViewData.Model = model;
    return View();
}

次に、フォームにモデル データを再入力します。

于 2009-09-25T14:06:01.653 に答える
0

コントローラーの Index アクションの文字列名は FormValue にマップされます。これを変更すると、MVC は FormValueCollection からテキスト ボックスに値を追加する必要があることを認識し、Index アクションでそれを変更しました。自分で変数を宣言すると、フォーム値へのバインディングがないため、これは機能しません。

于 2009-09-25T14:07:32.887 に答える