【问题标题】:Serialize model into Query string将模型序列化为查询字符串
【发布时间】:2011-02-07 09:45:41
【问题描述】:

是否可以将模型对象序列化为查询字符串? 我不知道这是否可能,但如果没有,最好的方法是什么?

<% Html.RenderAction("Grid", "Grid", new { gridModel= ViewData["model"]}); %>

模型包含大约 20 个属性,单独创建查询字符串会使使用起来很痛苦,而且看起来真的很难看。那我有什么选择呢?

【问题讨论】:

  • 您总是可以将其序列化为 json,然后在您的操作中反序列化它。但我建议只向操作发送一个标识符,以便您可以获取操作中的所有数据。或者使用 Html.RenderPartial() 代替。这种方式违背了渲染操作助手的目的,并且在某种程度上违背了 mvc 模式。

标签: html model-view-controller models


【解决方案1】:

我最终为此使用了表单。没有我想要的漂亮和漂亮,但据我所知,这是我能做到的唯一好方法。

【讨论】:

    【解决方案2】:

    要直接回答,您可以使用 JSON.NET 之类的东西将其序列化为 ASCII,然后对其进行 base64 编码。

    但是,您可以在查询字符串中包含多少数据存在非常实际的限制,我会犹豫是否这样做。

    我能想到的最接近的方法是创建一个 GUID,使用该 GUID 作为密钥将对象存储在 Session 中,然后将 GUID 传递给 RenderAction。该操作会将对象从 Session 中拉出,然后将其从 Session 中移除。

    快速伪代码(不保证甚至可以编译,工作量更少)

    var _requestKey = Guid.NewGuid();
    Session[requestKey] = gridModel;
    

    然后在另一边:

    var gridModel = Session[requestKey] as GridModelType;
    Session[requestKey] = null;
    

    【讨论】:

    • 酷。我明白你在说什么。我最终解决了它并且没有序列化模型,而是手动输入所需的参数。不漂亮,但效果很好。感谢您的回答。
    猜你喜欢
    • 1970-01-01
    • 2012-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 2011-10-14
    • 2021-01-08
    相关资源
    最近更新 更多