防止模型中的属性显示在查询字符串中

时间:2013-05-05 11:23:18

标签: asp.net asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 asp.net-mvc-2

在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]这样的属性非常适合坚持属性。

1 个答案:

答案 0 :(得分:1)

您可以使用匿名路由对象重定向到操作,

return RedirectToAction("home", new {model.Name });

这不包括查询字符串中的secret属性。 <{1}}仍然可以在重定向的操作中用于填充。

希望这会有所帮助。