【问题标题】:ModelBinder not bind the valuesModelBinder 不绑定值
【发布时间】:2009-11-09 21:28:10
【问题描述】:

嗨,我的控制器中有一个动作,我正在等待 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 代码:

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

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

【问题讨论】:

    标签: c# asp.net-mvc


    【解决方案1】:

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

    【讨论】:

    • 我正在为另一个动作方法做同样的事情,我将数据作为 json 发送,modelbinder 成功绑定值,但在另一个动作中它没有:S 我正在使用 MVC v2p2
    【解决方案2】:

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

    因为Validation Attribute ModelBinder如果有NotValid的情况就不会绑定属性...

    [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; }
        ....
        ....
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-01-28
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多