【问题标题】:ASP.NET MVC JSON Post a HTML Form to a View?ASP.NET MVC JSON 将 HTML 表单发布到视图?
【发布时间】:2009-12-02 18:45:49
【问题描述】:

我有以下代码:

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 表单/Spark:

<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 对象没有被输入值填充,我觉得我忽略了一些非常简单的东西……你能指出来吗:|

【问题讨论】:

    标签: c# jquery asp.net-mvc json


    【解决方案1】:

    输入需要一个名称属性才能正确发布。您应该添加一个与 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>
    

    【讨论】:

    • @tvanfosson:你的意思是 id 属性。
    • 我需要 name 属性和 id 属性还是只需要 name :)?
    • 我的错——我只是查了一下,因为我不确定,MVC 助手确实用下划线替换了 id 中的点。不是绝对必要的,但它对 jQuery 有帮助。
    • 你只需要这个名字,但是如果你想用带有id的javascript访问它就很方便了。
    【解决方案2】:

    你应该使用:

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

    编辑

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-01-18
      • 2023-04-09
      • 1970-01-01
      • 2014-09-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多