从输入文件元素获取值?

时间:2011-01-30 18:29:50

标签: jquery asp.net-mvc-2 file-upload input

您好,

我的输入看起来像这样:

<input type="file" id="ModelViewAd.Files[0]" name="ModelViewAd.Files[0]" />

以这种方式设置id和name以便能够绑定到视图类(ASP.NET MVC2)。

当我尝试运行以下jquery命令来获取值时:

$('#ModelViewAd.Files[0]').val()

我未定义?

我做错了什么?

BestRegards

解决方案:这可以通过更改名称来解决(HTML4不支持[和])。但是如果你使用的是HTML5,那么可以使用这样的转义字符来解决这个问题:$('#ModelViewAd.Files \ [0 \]')。val()。

5 个答案:

答案 0 :(得分:1)

没有错 - 这是不受支持的。这是浏览器中的安全限制,因此您无法推断有关最终用户文件系统的任何信息。

答案 1 :(得分:1)

.字符不是id属性的有效字符。 MVC使用名称字段中的.id中的下划线。这可能是为什么你不能用jquery抓住它的一部分。

此外,在您的示例中,您向我们展示了名为ModelViewAd.Files[8]的元素,但正在尝试在jquery选择器中选择ModelViewAd.Files[3]。这不是问题的一部分,是吗?

答案 2 :(得分:1)

您需要escape the period character (.) in the selector。否则,jQuery会将您的选择器解释为查找标识为ModelViewAd和类Files[0]的元素:

$('#ModelViewAd\\.Files[0]')

一旦你实际选择了一个元素(我假设你的选择器没有正常运行),如果用户实际上没有选择文件,.val()方法仍然可以返回undefined。 / p>

答案 3 :(得分:1)

如果您定位的浏览器不支持HTML5,那么当您在ID属性中使用[]时,您将使用无效的HTML。

因此,您不应期望浏览器之间的行为一致。

其他人注意到.与选择引擎冲突,但它有效HTML4

答案 4 :(得分:0)

我有一个简单的解决方案,它完美无缺 首先将id更改为 ModelViewAd ,然后使用jQuery,您可以简单地将文件对象作为

$('#ModelViewAd').get(0).files;