asp.net-core-mvc – 将复杂对象存储在MVC 6中的TempData中
|
通过使用TempData,我一直在尝试通过重定向将数据传递给一个操作: if (!ModelState.IsValid)
{
TempData["ErrorMessages"] = ModelState;
return RedirectToAction("Product","ProductDetails",new { code = model.ProductCode });
}
但不幸的是,它失败了以下消息: “System.InvalidOperationException 我在the MVC project in Github发现了一个问题,但是当它解释为什么我得到这个错误,我看不到什么会是一个可行的替代方案. 一个选项是将对象序列化为一个json字符串,然后将其反序列化并重建ModelState.这是最好的方法吗?是否有任何潜在的性能问题我需要考虑到? 最后,是否有任何序列化复杂对象或使用不涉及使用TempData的其他模式? 解决方法您可以创建这样的扩展方法:public static class TempDataExtensions
{
public static void Put<T>(this ITempDataDictionary tempData,string key,T value) where T : class
{
tempData[key] = JsonConvert.SerializeObject(value);
}
public static T Get<T>(this ITempDataDictionary tempData,string key) where T : class
{
object o;
tempData.TryGetValue(key,out o);
return o == null ? null : JsonConvert.DeserializeObject<T>((string)o);
}
}
而且,您可以使用它们如下: 说objectA是ClassA类型.您可以使用上述的扩展方法将其添加到临时数据字典: TempData.Put(“key”,objectA); 并检索它可以这样做: var value = TempData.Get&ClassA>(“key”)其中检索的值将是ClassA类型 (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – AutoMapper.Mapper不包含CreateMap的定义
- asp.net-mvc – Html.HiddenFor值属性未设置
- asp.net – 如何设置sqldatasource参数的值?
- 如何在使用ASP.NET友好URL时忽略某些路由?
- asp.net – Aspnet网站管理工具,Users表或aspnet_users表
- 具有自定义角色的ASP.NET MVC和Windows身份验证
- asp.net – GridView分页 – 第一,最后,下一个,上一个
- ASP.NET和底层连接已关闭:无法为SSL / TLS安全通道建立信任
- asp.net-mvc – MVC3区域中的相对内容路径
- asp.net-mvc – MVC .NET模型即时绑定到数组
- .net – 为什么我的剃刀视图抱怨“}预计”升级到
- asp.net-vnext中的旧程序集引用错误
- asp.net-core-mvc – 在Entity Framework Core中
- ASP.NET/IIS中使用的非标准HTTP动词“DEBUG”是什
- asp.net-mvc – 在您的ViewModel中放置什么
- asp.net-mvc – 从MVC Controller导出到CSV,View
- asp.net – 对框架程序集“System.Runtime,Versi
- asp.net – 更改事件和IE8的jQuery问题
- asp.net-mvc – 在visual studio中快速更改视图和
- ASP.NET C#捕获类中的所有异常
