【发布时间】:2015-05-08 19:11:00
【问题描述】:
我在 ASP.NET MVC API 中解析我的模型时遇到了一些问题
这是我的 API 控制器:
public class UserController : ApiController
{
// Hent liste af personer
public IEnumerable<UserModel> Get()
{
return new UserModel[] { new UserModel(), new UserModel() };
}
// Hente enkelt person
public UserModel Get(int id)
{
return new UserModel();
}
// Opret person
[ValidationActionFilter]
public CreateUserRespose Post([FromBody]UserModel model)
{
CreateUserRespose rs = new CreateUserRespose();
return rs;
}
// Rediger person
public UserModel Put(int id, [FromBody]UserModel model)
{
return new UserModel();
}
// Slet person
public UserModel Delete(int id)
{
return new UserModel();
}
}
}
还有用户模型:
public class UserModel
{
[Required]
[StringLength(500)]
public String FristName { get; set; }
[Required]
[StringLength(500)]
public String LastName { get; set; }
[Required]
[StringLength(250)]
public String Email { get; set; }
[Required]
public String MatrikelId { get; set; }
}
当我通过 Fiddler 使用以下正文调用 Post 命令时
FirstName=Fistname MiddleName&LastName=SomeName&Email=email@email.us&MatrikelId=1234
是否会调用 Post 动作,但模型为空,且 ModelState.IsValid 为真,如果我不使用正文发送数据,也会发生同样的情况! 我在这里做错了什么?
更新: 我尝试将数据作为 json 发送 提琴手:
User-Agent: Fiddler
Host: localhost:51268
Content-Length: 102
Content-type: application/json
{"FristName":"Kasper asdasd","LastName":"asdasdasd","Email":"asdaasd@asdasd.us","MatrikelId":"132456asd"}
但是当模型为null时,模型状态不应该是无效的吗?
【问题讨论】:
-
您的请求中的
Content-Type标头值是什么? -
我没有在提琴手中设置一个标题是以下“用户代理:提琴手主机:localhost:51268内容长度:79”
-
尝试去掉参数前面的
[FromBody] -
@Aviatrix 我试过了,没用
-
在这种情况下请将其设置为
application/x-www-form-urlencoded它应该可以解决问题。如果您确认这是您的问题,我将在回答中描述详细信息。