1

在asp.net mvc的,如果我有像下面的模型:防止模型中的属性显示在查询字符串

public class MyModel 
{ 
public string Name {get; set;} 
public string MySecretProperty {get { return "123"; } } 
} 

在我的控制器:

MyModel model = new MyModel(); 
.... 
RedirectToAction("home", model); 

生成的URL会:

home?Name=xyz&MySecretPropert=123 

有没有办法隐藏一个属性显示在查询字符串使用属性?我仍然希望在视图中使用该属性,并希望它保留为模型的一部分,但不希望将其显示在查询字符串中。

我能想到的唯一选择是创建另一个类,并且不在其中包含秘密属性,然后使用该类进行重定向,然后通过使用自动映射器或类似方法映射属性来重新构建完整模型。

有没有什么优雅的方式来做到这一点?一个属性可以完美地坚持像[HideDuringRedirect]这样的属性。

回答

1

您可以重定向到动作以匿名路由对象为,

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

这将不包括在查询字符串的秘密财产。 MyModel仍然可以在重定向操作中使用。

希望这有助于。