栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > 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号