c# – MVC疯狂财产失去了它的价值. Html.HiddenFor bug?

c# – MVC疯狂财产失去了它的价值. Html.HiddenFor bug?,第1张

概述在我的MVC应用程序中发生了一些非常奇怪的事情让我发疯. 在我的MVC页面上,在用户被选中后,它的登录应该在 HTML上“渲染”两次. 一旦形成 FrmNextStep('<Login>', ...(where Model.SelectedUser.Login is used) 一旦形式的 <input id="SelectedLogin" name="SelectedLogin" value= 在我的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)
总结

以上是内存溢出为你收集整理的c# – MVC疯狂财产失去了它的价值. Html.HiddenFor bug?全部内容,希望文章能够帮你解决c# – MVC疯狂财产失去了它的价值. Html.HiddenFor bug?所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/langs/1263868.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-06-08
下一篇 2022-06-08

发表评论

登录后才能评论

评论列表(0条)

保存