我上下搜索了我认为常见问题的答案,但未能找到解决方案......所以这就是问题所在:
我有以下型号:
public class UserModel
{
public string userType { get; set; }
public string userName { get; set; }
public string passWord { get; set; }
public string userClaim { get; set; }
public string redirectAction { get; set; }
public string jsonWebToken { get; set; }
public string message { get; set; }
}
我在Web API控制器中“填充”此模型:
return RedirectToRoute("Default", new
{
controller = "Redirect",
action = "SsoRedirect",
method = "Get",
userType = thisUser.userType,
userName = thisUser.userName,
passWord = thisUser.passWord,
userClaim = thisUser.userClaim,
redirectAction = thisUser.redirectAction,
jsonWebToken = thisUser.jsonWebToken,
message = thisUser.message,
});
然后将它传递给另一个控制器,如:
[HttpGet]
[Route("SsoRedirect")]
public IHttpActionResult SsoRedirect(UserModel myUser)
{
....
}
问题:myUser即将成为null。模型上没有任何属性受到约束。
这是我确定的:
所以......对于我的生活,我无法弄清楚为什么这个模型没有约束力,希望能在这里提供一些帮助。
答案 0 :(得分:1)
如果您将复杂类型作为参数提供给Web API控制器并通过GET访问它,则需要告诉控制器它可以从请求中发送的查询字符串参数创建对象。添加[FromUri]
属性,您的对象应该可以正常创建:
[HttpGet]
[Route("SsoRedirect")]
public IHttpActionResult SsoRedirect([FromUri]UserModel myUser)
{
....
}