2

我正在尝试发布到控制器操作并正确填充模型,但我得到的只是一个空模型,其两个属性都设置为 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

这里有什么问题?

4

2 回答 2

4

尝试将 get/set 添加到视图模型:

public class LoginViewModel
{
    public string UserName { get; set; }
    public string Password { get; set; }
}
于 2013-08-15T20:12:54.130 回答
0

我相信您的控制器操作会出现以下两种情况之一。

  1. 带有空正文的此 URL 的 POST:

    /api/login?UserName=me&Password=testfake
    
  2. /api/login与此主体的 POST :

    {
        "UserName": "me",
        "Password": "testfake"
    }
    
于 2013-08-15T20:13:07.893 回答