【问题标题】:Prevent a property in model to show up in query string防止模型中的属性显示在查询字符串中
【发布时间】:2013-04-29 08:06:12
【问题描述】:

如果我有如下模型,则在 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] 之类的属性上。

【问题讨论】:

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


    【解决方案1】:

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

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

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

    希望这会有所帮助。

    【讨论】:

      猜你喜欢
      • 2013-12-31
      • 2015-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-06-14
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多