Jak*_*keJ 2 c# model asp.net-mvc-3
这不是一个重大问题,但绝对是一个很好看的问题.
例如,我有一个看起来像这样的模型(不是我为了节省阅读时间而剪掉一些,我确实有确认字段等:)):
public class NewUser
{
[Required]
public string Username{ get; set; }
[Required]
public string Password{ get; set; }
public string Salt{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
在post之后的代码中(在验证之后)我创建了一个用于单向加密密码的salt,并且在模型中使用它非常有用(我知道我可以把它留下来,但我宁愿不这样做).
如果,在帖子上,用户添加到他们的查询字符串&salt=blahblahblah,一旦页面回发并且MVC匹配模型,它就会blahblahblah按预期将值分配给我的模型,我没有遇到问题,因为我总是可以覆盖这个.
有没有办法让我有一个属性,使MVC不会将模型中的值分配给从回发发送的内容,因为在其他模型中有一些我不希望它有可能设置的值(I有我的解决方法将它们重置为它们应该存在的东西,但如果有人想要尝试破解某些值,那么错过这可能会导致问题).
您可以在模型绑定期间使用BindAttribute到white/blacklist属性:
您可以在全局模型级别应用它:
[Bind(Exclude="Salt")]
public class NewUser
{
[Required]
public string Username{ get; set; }
[Required]
public string Password{ get; set; }
public string Salt{ get; set; }
}
Run Code Online (Sandbox Code Playgroud)
或者在单个控制器操作级别上:
public ActionResult MyAction([Bind(Exclude="Salt")] NewUser user)
{
//...
}
Run Code Online (Sandbox Code Playgroud)