发布到控制器操作时的空模型属性

时间:2013-08-15 20:09:37

标签: asp.net-mvc

我正在尝试发布到控制器操作并正确填充模型,但我得到的只是一个空模型,其两个属性都设置为null。

这是参数模型:

public class LoginViewModel
{
    public string UserName;
    public string Password;
}

以下是行动:

[HttpPost]
public HttpResponseMessage Login(LoginViewModel model)
{
    // model.UserName and model.Password are null for some reason
}

这是路线配置:

config.Routes.MapHttpRoute(
    name: "AuthApi",
    routeTemplate: "api/login",
    defaults: new
    {
        controller = "ApiAccount",
        action = "login"
    }
);

这是请求:

POST /api/login HTTP/1.1
Host: localhost:51444
Cache-Control: no-cache
Content-Type: application/x-www-form-urlencoded

UserName=me&Password=testfake

这里有什么问题?

2 个答案:

答案 0 :(得分:4)

尝试添加get / set以查看模型:

public class LoginViewModel
{
    public string UserName { get; set; }
    public string Password { get; set; }
}

答案 1 :(得分:0)

我相信您的控制器操作期待以下两种情况之一。

  1. 此网址的POST为空主体:

    /api/login?UserName=me&Password=testfake
    
  2. 使用此正文向/api/login发送邮件:

    {
        "UserName": "me",
        "Password": "testfake"
    }