加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > asp.Net > 正文

asp.net-mvc – 输入类型=“隐藏”vs htmlhelper奇怪的问题

发布时间:2020-12-16 09:35:33 所属栏目:asp.Net 来源:网络整理
导读:我花了一个小时试图弄清楚为什么隐藏字段中的值与我期望的值不同.作为最后的努力,我把它切换到一个隐藏的领域,它开始渲染为我期待的那个.为什么会这样? 某些上下文是使用htmlhelper的ID正在使用的ID与querystring ID参数中的ID相同. // renders 123 @using
我花了一个小时试图弄清楚为什么隐藏字段中的值与我期望的值不同.作为最后的努力,我把它切换到一个隐藏的领域,它开始渲染为我期待的那个.为什么会这样?

某些上下文是使用htmlhelper的ID正在使用的ID与querystring ID参数中的ID相同.

// renders 123
  @using (Html.BeginForm()){
         <input type="hidden" name="id" value="@Model.ID" />
  }

VS

// renders 456
@using (Html.BeginForm()){
         @Html.Hidden("id",Model.ID)
}

解决方法

我相信这是MVC命名约定的一部分.这发生在我身上,因为我的一个模型属性是“标题”,它与ViewBag.Title冲突.它开始显示ViewBag.Title而不是实际的Model’s Title.

我相信只有在HtmlHelper中明确声明“Model.ID”时才会发生这种情况.它查看属性名称“ID”,然后查看ViewContext并查找查询字符串“ID”并使用它.

对于不使用HtmlHelper的查询字符串,它不使用查询字符串“ID”,因为它不会通过ViewContext查找该名称;它只是放置模型中的任何值. HtmlHelpers通常会查看ViewContext,并根据属性名称确定要使用的值,而不是它的确切来源.

如果你想使用HtmlHelper,试试看它的作用:

@Html.HiddenFor(model => model.ID)

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读