当前位置: 首页 > 编程语言 > C#

TextBoxFor值在post后没有更新分享

时间:2023-04-10 23:12:08 C#

C#学习教程:发帖后TextBoxFor值未更新这是我的模型:publicclassRepair{publicstringNumber{get;放;在我看来是一个文本框:@Html.TextBoxFor(x=>x.Number)数字=“新价值”;返回视图(r);}即使我将Number设置为新值,文本框中的文本也不会改变。我究竟做错了什么?在设置值之前使用ModelState.Clear()[AcceptVerbs(HttpVerbs.Post)]publicActionResultIndex(Repairr){ModelState.Clear();//在这里添加r.Number="NewValue";返回视图(r);将模型发回ActionResult并返回相同的视图时,模型对象的值包含在ModelState中。ModelState包含有关有效/无效字段以及实际POSTed值的信息。如果要更新模型值,可以执行以下两项操作之一:ModelState.Clear()或ModelState["Number"].Value=newValueProviderResult("NewValue","NewValue",CultureInfo.CurrentCulture)from我的handle开始出现这个问题,感觉是框架的设计bug。IMO:@Html.TextBoxFor(x=>x.Number)不应从ModelState获取值,而应直接从模型获取值。至少这是我在更改模型并返回View(model)时所期望的。ModelState.Clear()不是答案,因为它会清除ModelState并擦除ValidationSummary。从ModelState中删除键是不好的,因为它会删除该键的ValidationSummary。ModelState["Number"].Value=newValueProviderResult("NewValue","NewValue",CultureInfo.CurrentCulture)是正确的,但太含糊了。所以在这种情况下,我的偏好是使用:而不是@Html.TextBoxFor(x=>x.Number)如果你发现ModelState.Clear()破坏性太大,只针对你想要更改的项目,同时使用ModelState.Remove()保留其余项目。[AcceptVerbs(HttpVerbs.Post)]publicActionResultIndex(Repairr){r.Number="NewValue";ModelState.Remove("数字");返回视图(r);此外,无论是在更新模型之前还是在调用方法之后,使用Remove()还是Clear()都没有关系。尝试这个。如果你愿意,你可以把它放在你的基本控制器中。这个对我有用。这使得验证仍然有效,但模型中的值通过时正确显示为预期。以上为C#学习教程:TextBoxFor值发帖后未更新分享。如果对大家有用,需要进一步了解C#学习教程,希望大家多多关注——x=>x.Value).ToList().ForEach(x=>{x.AttemptedValue=null;x.RawValue=null;});//如果需要,可以在这里做一些事情。诸如验证之类的东西。base.OnActionExecuted(上下文);}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处: