大佬教程收集整理的这篇文章主要介绍了TextBox用于显示初始值,而不是从代码更新的值[重复],大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
您的问题是(逐步)
Someinformation()
方法将值设置test1.Latitude
为“ LATITUDE2”。Index()
使用RedirectToAction
接受对象的重载将该模型传递给您的方法。在内部,它使用反射来RouteValueDictionary
基于模型的属性(在本例中为latitude="LATITUDE2"
)构建一个。Index
方法时,模型受的约束DefaultModelBinder
,现在的值DataSiteList.Latitude
是“ LATITUDE2”(这就是您输入if
块的原因)DefaultModelBinder
将的 @H_777_6@modelState值设置Latitude
为“ LATITUDE2”。Latitude
现在,将忽略任何设置的尝试,因为视图使用 @H_777_6@modelState值来呈现控件。目前尚不清楚您要在这里做什么。您可以通过添加@H_777_6@modelState.Clear();作为方法的第一行来使其按预期工作Index()
。这将清除所有现有@H_777_6@modelState值,您现在可以将其设置为“
LATITUDE”。
但是你的if
障碍没有意义。也许您只是在做某种测试,但是您也可以从Index()
方法中删除参数,并在方法中初始化一个新实例DataSites
。
编辑
为了给出更多有关为什么设置模型属性后更新无效的信息@H_777_6@modelState。
假设您有一个表格来收集模型所包含的用户信息int
Age
。要求用户输入他们的年龄,然后有人输入“下周我五岁!”。当然,这不会绑定到int,因此DefaultModelBinder
会添加值(attemptedValue
)并添加@H_777_6@modelStateError。
返回视图后,通常会显示一条错误消息,例如“字段年龄必须是数字”。如果呈现控件的HTML Helper使用了模型值,则它将显示“ 0”(int的默认值)。对于用户来说,在文本框中看到“ 0”会有些令人困惑,然后显示一条消息,提示它必须是一个数字(什么!但是零是一个数字,我输入的内容到底发生了什么? )。因此,帮助程序使用的是的值@H_777_6@modelState,现在用户看到“下周我五岁!” 以及对值有意义的关联错误消息。
因此,即使您以为 “它不合逻辑” ,实际上这种行为还是有逻辑的。
这个问题已经在这里有了答案 :
提交表单后重置textarea的值 (9个答案)
5年前关闭。
我有一个显示值的MVC应用程序。这是控制器:
public ActionResult Index(DataSites DataSiteList)
{
if (DataSiteList.Latitude != null)
{
DataSites test = new DataSites();
test.Latitude = "LATITUDE";
return View(test);
}
return View(DataSiteList);
}
public ActionResult SomeInformation()
{
DataSites test1 = new DataSites();
test1.Latitude = "LATITUDE2";
return RedirectToAction("Index",test1);
}
风景:
@model miniproj2.Models.DataSites
<p>
@Html.TextBoxFor(x => x.LatitudE)
</p>
和模型:
public class DataSites
{
public String Latitude { get; set; }
}
当我转到/ Home / SomeInformation时,DataSites
‘ Latitude
属性设置为“
LATITUDE2”。然后重定向到Index()
控件中的操作,将属性设置为“ LATITUDE”并返回视图。
当显示视图时,它将显示在重定向中设置的值“ LATITUDE2”。不应该显示“纬度”吗?
以上是大佬教程为你收集整理的TextBox用于显示初始值,而不是从代码更新的值[重复]全部内容,希望文章能够帮你解决TextBox用于显示初始值,而不是从代码更新的值[重复]所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。