【发布时间】:2015-07-23 21:45:34
【问题描述】:
对于我认为是一个常见问题的答案,我已经四处寻找答案,但一直未能找到解决方案……所以问题如下:
我有以下型号:
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 的形式出现。模型上的所有属性都没有被绑定。
这是我确定的:
- 我的路由很好,因为 SsoRedirect 中的断点实际上已被命中。
- 当我在 fiddler 中进行跟踪时,我可以看到所有适当的查询字符串参数都在传递。
- 我了解我无法传递具有枚举和其他复杂数据类型的复杂对象,因此所有内容都仅限于字符串。
所以...对于我的生活,我无法弄清楚为什么模型没有绑定并希望在这里得到一些帮助。
【问题讨论】:
-
我不认为这是重复的,因为我只使用字符串,根据链接中列出的文章,这些字符串应该可用于模型绑定..
-
不,您使用的是复杂类型,
UserModel- 您需要在前面加上[FromUri] -
谢谢谢谢谢谢!!!! From URI 属性完全成功了。 @levelnis:请发表一个答案,我会这样标记。
标签: c# asp.net-web-api model-binding