asp.net-mvc – ASP.NET MVC 5 Html.HiddenFor呈现不正确的属性
> Visual Studio 2013 Professional
> C# > .NET 4.5 Framework > ASP.NET MVC 5 在我的视图模型类中,我有一个名为SerializedSelf的属性,它用于将自身表示为序列化字符串,也可以反序列化,但仅限于尚未初始化的任何属性.我使用它来通过使用具有此值的单个隐藏输入来简化视图模型的往返.在传递给控制器??方法之前,框架将在模型中填充与模型相关的任何其他输入. 我遇到的问题是,在我的剃刀视图代码中,这不能正确呈现: @Html.HiddenFor(model => model.SerializedSelf) 我还没有确定它是否正在序列化一个完全未初始化的MyViewModel对象,或者它是否是来自其他地方的实例. 但这很正常: <input type="hidden" name="SerializedSelf" id="SerializedSelf" value="@Model.SerializedSelf" /> 所以我猜它可能与lambda表达式和附件有关???当我在源代码中单步执行时,SerializedSelf在我调用return View(“myView”,model)之前就具有正确的值. 这是视图模型代码: using Newtonsoft.Json; using System; using System.Text; public class MyViewModel { [JsonIgnore] public string SerializedSelf { get { return JsonConvert.SerializeObject(this); } set { if (string.IsNullOrWhiteSpace(value)) return; string json = value; MyViewModel copy = JsonConvert.DeserializeObject<MyViewModel>(json); if (Message == null) Message = copy.Message; if (Phone == null) Phone = copy.Phone; // ... } } public string Message { get; set; } public string Phone { get; set; } // ... } 有什么区别: @Html.HiddenFor(model => model.SerializedSelf) 和 @Model.SerializedSelf 什么会导致前者不准确? 更新2013/12/5:我从SerializedSelf中删除了逻辑,并在适当的时间显式地序列化/反序列化为SerializedSelf,以测试它是否有任何影响.它没有影响,行为就像我上面所描述的那样. 更新2013/12/5:删除了HTML编码和解码.从之前的解决问题尝试中遗留下来. 更新2013/12/5:我今天没有时间研究这个问题,但是我想到,SerializedSelf属性上的[JsonIgnore]属性可能是罪魁祸首,而且它干扰了MVC框架中的某些东西.我会尽快调查并更新. 解决方法
如果在呈现视图以响应POST请求后发生这种情况,您应该知道HTML帮助程序使用旧值,因为它们认为存在验证错误.您可以在此
blog post中找到详细说明.
(编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net-mvc – 在控制器的OnException中确定结果类型
- ASP.NET应用程序从Session.Remove实现中抛出System.NullRef
- asp.net-mvc – 在Asp.Net Core中启用基于客户端的文化
- ASP.NET 4.0中的不同服务器和客户端缓存策略
- 如何在ASP.NET Web应用程序(而不是MVC)中使用Razor语法
- 深度探秘.NET 5
- asp.net – Crystal Report Viewer控件未加载报表中的图像
- 如何在asp.net mvc 2中获取Html.EditorForModel()方法的tex
- asp.net-mvc-3 – 基于字符串创建ViewBag属性
- asp.net-mvc – “添加控制器”/“添加视图”在混合MVC / W
- asp.net – Web开发人员可以使用最好的HTML WYSI
- asp.net – 无法自动进入服务器.无法确定停止位置
- ASP.NET Repeater ItemDataBound事件中等效的Eva
- asp.net-mvc – 在github中避免使用ASP.NET密码?
- asp.net-mvc-4 – Web api open oauth(DotNetOpe
- asp.net-mvc – 在ASP.NET Identity中手动验证密
- asp.net-mvc-4 – 什么是antlr3,为什么默认情况下
- asp.net-mvc – ConfigurationManager读取错误的
- asp.net – 对于布尔查询字符串参数使用“true”
- asp.net – 如何创建数据库并在安装过程中填充它