私は単純なhtmlフォームと、デフォルトのバインダに基づくフォームに対応するモデルを持っています。 HTTPPOSTは正常に動作し、フォームの送信時にすべてのフォーム値をモデルに取り込みます。 しかし、私はHTTP GETが、ユーザー名がHelloにデフォルト設定されたフォームを表示することを期待していました。しかし、ビューには空白のフォームが表示されます。誰かが親切に、デフォルトのモデルバインダーがGETリクエストのフォームに値をプッシュできないのを私に説明することができましたが、POSTリクエストでモデルからフォームへの値を取得できます。ありがとう。MVC3モデルバインディングとGETリクエスト
----- ----- CONTROLLER
[HttpPost]
public ActionResult Index(SimpleFormModel application)
{
return View(application);
}
[HttpGet]
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
SimpleFormModel simplefm = new SimpleFormModel();
simplefm.UserName = "Hello";
return View(simplefm);
}
--- --- MODEL
public class SimpleFormModel
{
public string UserName { get; set; }
public string Dob { get; set; }
public string Email { get; set; }
}
-------- VIEW ----- ---------------------あなたが行ったように、それらをハードコーディングするのではなく、あなたの入力フィールドを生成するHTMLヘルパーを使用する必要が
@model MVC3MobileApplication.Models.SimpleFormModel
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
To learn more about ASP.NET MVC visit <a href="http://asp.net/mvc" title="ASP.NET MVC Website">http://asp.net/mvc</a>.
</p>
<form action="">
<fieldset>
<legend>Personal information:</legend>
Name: <input type="text" size="30" name="SimpleFormModel.UserName" /><br />
E-mail: <input type="text" size="30" name ="SimpleFormModel.Email"/><br />
Date of birth: <input type="text" size="10" name ="SimpleFormModel.Dob"/>
</fieldset>
</form>
...フィールドの値を記入することができません.NETそうでない場合
htmlヘルパーを使わなくても、htmlヘルパーであっても投稿のモデルにリクエストしてバインドすることもできます。私はビューを可能な限り純粋なhtmlとして保つことを望んでいました。 –
@RekhaJayaram、モデルバインダーは、転記された値を解析するために使用されます。 HTMLの入力フィールドに値を出力するには、value属性を使用する必要があります: 'これはまさにヘルパーがやることです。 –
そのことを説明する時間をとってくれてありがとう。それは本当に何が起こっているのか理解してくれました。 –