使用 MVC 从视图中的隐藏文本框中获取数据

Posted

技术标签:

【中文标题】使用 MVC 从视图中的隐藏文本框中获取数据【英文标题】:getting data from hidden textbox in a View using MVC 【发布时间】:2013-06-10 15:39:44 【问题描述】:

我正在尝试将数据从隐藏的输入标签文本框传递到控制器

似乎数据总是以 null 的形式传递。

我的观点:

<input id="hiddenAwayid" type="text" class="resultAway" name="hiddenAway" style="visibility: hidden;"/>
<input id="hiddenHomeid" type="text" class="resultHome" name="hiddenHome" style="visibility: hidden;"/>

我的控制器:

public ActionResult addStatistic(StatisticModel model, string hiddenAway, string hiddenHome)

【问题讨论】:

您使用文本输入而不是隐藏输入有什么原因吗? 你是什么意思?我一直使用这种方法不知道这里的问题 而不是使用 css 隐藏文本框(可见性:隐藏;),您应该只使用隐藏的输入字段: 好的,我如何将数据获取到控制器? 【参考方案1】:

为什么不把字段放到 ViewModel 中呢?然后你可以使用:

@html.HiddenFor(m => m.Awayid)
@Html.HiddenFor(m => m.Homeid)

当您发布它时,值将位于model.Awayidmodel.Homeid

你这样做的方式,我认为它不起作用,因为“id”在 html 和操作上是不同的。

HTML: hiddenAwayid 行动:hiddenAway

【讨论】:

html id 不影响提交的 POST 键名。该字段的名称是模型绑定的,并且在表单字段和控制器操作之间匹配。必须检查,但最初的猜测是,因为他绑定了一个单独的模型,简单的属性没有从 POST 绑定 - 它正在尝试对它们进行路由绑定。将它们移入 StatisticModel 可能会解决问题。【参考方案2】:

更好的解决方案是将隐藏输入与对象值类似

@Html.Hidden("hiddenAway",(value))

或者您可以使用这 2 个名称在模型中再创建 2 个属性。

【讨论】:

以上是关于使用 MVC 从视图中的隐藏文本框中获取数据的主要内容,如果未能解决你的问题,请参考以下文章

asp.net mvc 从视图中的文本框获取数据返回存储过程以编辑记录

显示从 ASP.NET MVC 中的命令行进程获取的数据

如何使用 C# 从文本框中的访问数据库中获取数据

Asp.net 从 asp 中的文本框获取值到代码后面

从嵌套 recyclerview 的所有输入框中获取所有编辑文本正在获取最新的 recyclerview 项目而不是所有数据

如何从MVC5中的jquery ajax调用中获取部分视图和JSON数据?