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] 这样的属性。

4

1 回答 1

2

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

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

这不会在查询字符串中包含秘密属性。MyModel仍然可以在要填充的重定向操作中使用。

希望这可以帮助。

于 2013-05-05T14:11:11.700 回答