c# – MVC疯狂财产失去了它的价值. Html.HiddenFor bug?
发布时间:2020-12-15 04:35:42 所属栏目:百科 来源:网络整理
导读:在我的MVC应用程序中发生了一些非常奇怪的事情让我发疯. 在我的MVC页面上,在用户被选中后,它的登录应该在 HTML上“渲染”两次. 一旦形成 FrmNextStep('Login',...(where Model.SelectedUser.Login is used) 一旦形式的 input id="SelectedLogin" name="Selec
在我的MVC应用程序中发生了一些非常奇怪的事情让我发疯.
在我的MVC页面上,在用户被选中后,它的登录应该在 HTML上“渲染”两次. 一旦形成 FrmNextStep('<Login>',... (where Model.SelectedUser.Login is used) 一旦形式的 <input id="SelectedLogin" name="SelectedLogin" value="<Login>" type="hidden"> (where "Model".SelectedLogin is used) 但第二个总是留空. if (Model.SelectedUser != null) { <span>Some value</span> <script type="scriptADResultComplete"> @{ var script = String.Format( @"FrmNextStep('{0}','{1}','{2}');",Model.SelectedUser.Login.Replace("'",@"'"),Model.SelectedUser.FirstName.Replace("'",Model.SelectedUser.LastName.Replace("'",@"'") ); @Html.Raw(script); } </script> } <input type="hidden" name="hfAction" /> <input type="hidden" name="hfUserLogin" /> @Html.HiddenFor(m => m.CurrentPage,new { id = "hfCurrentPage" }) @Html.HiddenFor(m => m.SelectedLogin); private User selectedUser; public User SelectedUser { get { if (this.selectedUser == null) { this.selectedUser = this.AllUsers.FirstOrDefault(user => user.Selected) ?? User.DefaultUser; } if (this.selectedUser == User.DefaultUser) { return null; } return this.selectedUser; } set { this.AllUsers.ForEach(user => user.Selected = (user == value)); this.selectedUser = null; } } public string SelectedLogin { get { return (this.SelectedUser ?? User.DefaultUser).Login; } set { this.SelectedUser = this.AllUsers.FirstOrDefault(user => user.Login == value); } } 当我调试代码时,在“呈现”阶段唯一调用选定登录并返回正确的登录. Html.HiddenFor有什么错误吗? 解决方法
好吧,它实际上是Html.HiddenFor的错误/错误行为.
在写我的问题时,我才想到这种可能性的想法. 我改成了: <input type="hidden" value="@Html.AttributeEncode(Model.SelectedLogin)" id="SelectedLogin" name="SelectedLogin" /> 而且它的工作非常好. 编辑: 还有另一个工作环节. 调用ModelState.Clear();在控制器后期行动中. ModelState.Clear(); @Html.HiddenFor(m => m.SelectedLogin) (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |