嗨我在我的控制器中有一个动作,我正在等待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;
}
});
答案 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; }
....
....