如何知道控制器中控件文本框/复选框等的类型?

问题描述:

我需要通过发出Ajax请求并下载HTML来动态构建控件,如文本框,复选框,单选按钮等。但是一旦有足够的控件显示在屏幕上并且用户提交了表单,我需要所有的控件并且它是张贴的值。在Asp.Net MVC中,使用非顺序索引很容易获得已发布的值。但是,我如何得到哪个控件的价值呢?简单地说如果表单已经提交了值“Hello World”。我需要能够知道Hello World的来源。是提交此值或文本区的文本框?如何知道控制器中控件文本框/复选框等的类型?

我不需要别的东西像ID,名字等等。只需要知道控件的类型,无论是texbox,textarea,select还是哪一个。

+5

标准服务器端,你不能。您需要记住,在MVC中,它使用标准的HTTP请求响应模型,这与WebForms不同,后者通过ViewState维护发送元素的上下文等。因此,从请求响应的角度来看,所有您必须使用的是发送数据的元素的名称和数据本身。 我能想到的最好的事情就是将发送的表单元素类型附加到元素的名称中,但这看起来有点麻烦。你为什么需要这个? – Liam

+0

@Liam你应该把它作为IMO的答案。 –

当您动态构建这些客户端元素时,您会为其提供一个名称,以便将其发布到服务器。
只要按照类似的命名约定:
textarea1,textarea2 ...
txt1中,TXT2,...
然后在服务器,收集价值观 - 以所有以textarea的收集值开始键文字区域的...

一个更好的办法,是有名单的模型为每种类型的,当你生成客户端要素,建立自己的名称,这样的数值将被ModelBinder的
被映射到正确的列表这些名称的语法有点讨厌,所以使用客户端模板 I used this post by haacked when i needed to build something like this

您需要了解更多关于http get或post的信息。