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'参数为空。

请让我理解为什么绑定在当前示例中不起作用。十分感谢!

4

1 回答 1

0

您的第二种方法需要一个[HttpPost]属性。您也不能将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 回答