栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

TextBox用于显示初始值,而不是从代码更新的值[重复]

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

TextBox用于显示初始值,而不是从代码更新的值[重复]

您的问题是(逐步)

  1. 您的
    SomeInformation()
    方法将值设置
    test1.Latitude
    为“ LATITUDE2”。
  2. 然后,您可以
    Index()
    使用
    RedirectToAction
    接受对象的重载将该模型传递给您的方法。在内部,它使用反射来
    RoutevalueDictionary
    基于模型的属性(在本例中为
    latitude="LATITUDE2"
    )构建一个。
  3. 当您点击该
    Index
    方法时,模型受的约束
    DefaultModelBinder
    ,现在的值
    DataSiteList.Latitude
    是“ LATITUDE2”(这就是您输入
    if
    块的原因)
  4. 在绑定过程中,
    DefaultModelBinder
    将的
    ModelState
    值设置
    Latitude
    为“ LATITUDE2”。
    Latitude
    现在,将忽略任何设置的尝试,因为视图使用
    ModelState
    值来呈现控件。

目前尚不清楚您要在这里做什么。您可以通过添加

ModelState.Clear();
作为方法的第一行来使其按预期工作
Index()
。这将清除所有现有
ModelState
值,您现在可以将其设置为“
LATITUDE”。

但是你的

if
障碍没有意义。也许您只是在做某种测试,但是您也可以从
Index()
方法中删除参数,并在方法中初始化一个新实例
DataSites
。

编辑

为了给出更多有关为什么设置模型属性后更新无效的信息

ModelState
。

假设您有一个表格来收集模型所包含的用户信息

intAge
。要求用户输入他们的年龄,然后有人输入“下周我五岁!”。当然,这不会绑定到int,因此
DefaultModelBinder
会添加值(
attemptedValue
)并添加
ModelStateError
。

返回视图后,通常会显示一条错误消息,例如“字段年龄必须是数字”。如果呈现控件的html helper使用了模型值,则它将显示“
0”(int的默认值)。对于用户来说,在文本框中看到“ 0”会有些令人困惑,然后显示一条消息,提示它必须是一个数字(
什么!但是零是一个数字,我输入的内容到底发生了什么? )。因此,帮助程序使用的是的值

ModelState
,现在用户看到“下周我五岁!”
以及对值有意义的关联错误消息。

因此,即使您以为 “它不合逻辑” ,实际上这种行为还是有逻辑的。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/465570.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号