在asp.net mvc中,如果我有如下模型:
public class MyModel
{
public string Name {get; set;}
public string MySecretProperty {get { return "123"; } }
}
在我的控制器中:
MyModel model = new MyModel();
....
RedirectToAction("home", model);
生成的网址将是:
home?Name=xyz&MySecretPropert=123
有没有办法隐藏属性以使用属性显示在查询字符串中?我仍然想在视图中使用该属性,并希望它仍然是模型的一部分,但只是不想在查询字符串中显示它。
我能想到的唯一选择是创建另一个类而不在其中包含secret属性然后使用该类进行重定向,然后通过使用自动映射器或类似方法映射属性再次重建完整模型。
有没有优雅的方法呢?像[HideDuringRedirect]这样的属性非常适合坚持属性。
答案 0 :(得分:1)
您可以使用匿名路由对象重定向到操作,
return RedirectToAction("home", new {model.Name });
这不包括查询字符串中的secret属性。 <{1}}仍然可以在重定向的操作中用于填充。
希望这会有所帮助。