代码之家  ›  专栏  ›  技术社区  ›  Andrew

ASP.NET MVC JSON是否将HTML表单发布到视图?

  •  4
  • Andrew  · 技术社区  · 16 年前

    我有以下代码:

    jQuery:

    $.ajax({
        url: '/personcontroller/getperson',
        cache: false,
        type: "POST",
        data: $('#person').serialize(),
        success: function(data) {
          alert('yay');
        }
        });
    });
    

    控制器:

    public ActionResult getPerson(Person person)
    {
        return new Json(person);
    }
    

    HTML表单/火花:

    <form id="person">
       <input id="person.Id" type="hidden" value="${ViewData.Model.Person.Id}" />
       <input id="person.Name" value="${ViewData.Model.Person.Name}"></input>
       <input id="person.Age" value="${ViewData.Model.Person.Age}"></input>
       <input value="${ViewData.Model.Person.Gender}"></input>
    </form>
    

    当我用表单发布Ajax调用时,在我的操作中放置一个断点。Person对象没有被输入值填充,我觉得我忽略了一些非常简单的东西…你能给我指出来吗:|

    2 回复  |  直到 16 年前
        1
  •  5
  •   Michael Gattuso    16 年前

    输入需要名称属性才能正确发布。您应该添加一个与ID匹配的名称属性。

    <form id="person">
       <input id="person.Id" name="person.Id" type="hidden" value="${ViewData.Model.Person.Id}" />
       <input id="person.Name" name="person.Name" value="${ViewData.Model.Person.Name}"></input>
       <input id="person.Age" name="person.Age" value="${ViewData.Model.Person.Age}"></input>
    </form>
    
        2
  •  2
  •   LukLed    16 年前

    你应该使用:

    public ActionResult getPerson([Bind(Prefix="person")]Person person)
    

    编辑

    正如MichaelGattuso注意到的,您应该填充name属性。