1

私の質問は、MVC でのバインディングについてです。それを手伝ってくれませんか?

私のコントローラー:

public class TestController : Controller
 {
        //
        // GET: /Test/
        [HttpGet]
        public ActionResult Index()
        {
            return View(new TestModel());
        }
        public ActionResult Index(TestModel test)
        {
           return View(test);
        }
 }

私の見解:

@model MvcApplication1.Models.TestModel

@using (Html.BeginForm())
{
@Html.TextBoxFor(x => x.test) // or x.Test
<input type="submit" value="Set"/>
}

私のモデル:

public class TestModel
{
public string test { get; set; } // or Test{get;set;}
}

私が理解しているように、問題はコントローラーのパラメーター「test」の名前に関連しています。「モデル」に変更したところ、バインディングが機能しています。しかし、元の状態 (パラメーターの名前は「test」) では機能していません。「test」パラメーターは null です。

現在の例でバインディングが機能しない理由を理解してください。本当にありがとうございました!

4

1 に答える 1

0

[HttpPost]2番目のメソッドに属性が必要です。testまた、バインドしようとしているクラスのプロパティと同じ名前であるため、変数名として使用することはできません。ModelBinderは、どちらを使用するかを決定できません。コードは次のようになります。

public class TestController : Controller
 {
        //
        // GET: /Test/
        [HttpGet]
        public ActionResult Index()
        {
            return View(new TestModel());
        }

        //
        // POST: /Test/
        [HttpPost]
        public ActionResult Index(TestModel testModel)
        {
           return View(testModel);
        }
 }
于 2013-02-01T14:06:00.497 に答える