ModelBinder不绑定值

时间:2009-11-05 09:22:41

标签: c# asp.net-mvc

嗨我在我的控制器中有一个动作,我正在等待ModelBinder将传入的postdata绑定到我的动作参数但它不会这样做,我不知道。我只用TryUpdateModel()手动绑定它们,但我不想使用它。属性名称和postdata与它们绑定它们的原因相同?

public class User
{
    public string FirstName { get; set; }
    public string LastName { get; set; }
    public string Username { get; set; }
    public string Password { get; set; }
}

public ActionResult Update(User user)
{
    // TODO
}

我的javaScript代码将数据发送到我的Action:

newData = {
   "FirstName":"Yucel"
   "LastName": "Akpınar",
   "Email": "yucelakpinar",
   "Password": "123456"
}; 

    $.ajax({
       type: "POST",
       dataType: "json",
       data: newData,
       url: "/Profile/Update",
       success: function() {
           debugger;
       }
    });

2 个答案:

答案 0 :(得分:0)

它无法工作的原因是因为请求的有效负载是JSON对象,当前模型绑定器无法解析(实际上模型绑定器不检索其任何值,值提供程序一样)。我们已经在v2中使这个场景成为可能,但是为了在v1中工作,你必须自己添加对它的支持。

答案 1 :(得分:0)

我解决了这个问题。原因是ModelState无效。

由于验证属性,如果存在NotValid情况,ModelBinder不会绑定属性...

[MetadataType(typeof(UserMetaData))]
public partial class User
{
    public string FirstName { get; set; }
    ....
    ....
}

public class UserMetaData
{
    [Required]
    [RegularExpression("[a-zA-Z]{2,30}")]
    public string FirstName { get; set; }
    ....
    ....