0

私は MVC 4 (および一般的な GUI) が初めてで、チュートリアルを 1 つまたは 2 つ行い、従来の HTML をいくつか入手して MVC の新しいソリューションに統合しました。

私の質問 -

Models フォルダーに MyModel.cs があります。Views フォルダーに SignUp.cshtml があります (HTML ヘルパーのない静的な伝統的な html ..) Controllers フォルダーに MyController.cs があります。

  1. モデルへの参照を追加しました (@model XXX.XXX.MyModel)
  2. 既存のフォームの前に @using (Html.BeginForm()) を追加しました...
  3. テキストフィールドの1つを新しい方法に変換しました:

    @Html.LabelFor(m => m.FirstName) @Html.TextBoxFor(m => m.FirstName)

それで?フォームの詳細をコントローラーに渡すにはどうすればよいですか? しようとした

[HttpGet]
        public ActionResult Create()...

 [HttpPost]
        public ActionResult Create(MyModel model1)

しかし、フォームを送信した後、関数は呼び出されません...ここで何かが欠けています(おそらくバインディングの理解において)

4

3 に答える 3

1

1) HTML ヘルパーを使用していない場合は、ビュー内のすべての入力コントロールのすべての名前がモデルのプロパティの名前と一致していることを確認してください。そうしないと、デフォルトでサーバーにモデルを戻すことができなくなります。ModelBinder

MyModel.cs:

public class MyModel
{
   public string Property1 {get; set;}
   public string Property2 {get; set;}
}

HTML:

<input type="text" name="Property1" id="Property1" />
<input type="text" name="Property2" id="Property2" />

2)アクションとその他のパラメーターを Html.BeginForm に提供する必要があります。それが問題のようです。フォームは投稿するアクションを見つけることができないため、次のようになります。

@using(BeginForm("actionName", "controllerName", FormMethod /*POST or GET*/))
{
   //Forms controls here
}
于 2013-09-16T12:42:56.703 に答える
0

最初にモデルを渡す必要はありません。これは、ビューで参照される空の構造であるためです。

    [HttpGet]
     public ActionResult Create()
    {
         return View();
    }

     [HttpPost]
     public ActionResult Create(RegisterModel model)
    {
      if (model != null && ModelState.IsValid) // check to see if any users are missing required fields. if not...
        {
            if (model.ID != 0)
            {
                UpdateRegister(model);
            }
            else
            {

                InsertRegister(model);
            }

        }
        else
        {
            return View();
        }
    return RedirectToAction("Index");
}
于 2013-09-16T16:10:57.170 に答える