我正在使用
@Html.TextBoxFor
加载并可能在编辑页面上设置附件文件路径。我可以打开文件浏览器窗口并重置值。但是,我无法获取要随页面加载的当前值或默认值。这是我现在使用的语法:
@Html.TextBoxFor(model => item.Filepath, new { @value = item.Filepath, @type = "file" })
如果我正确理解这个问题,那么您似乎正在尝试设置要打开的文件路径的默认值。简短的回答是你不能这样做。原因是,如果您能够在代码中设置文件路径,您就可以恶意地将路径设置为您想要从用户计算机窃取的内容,并通过客户端代码动态提交帖子。用户必须明确说出他想要浏览的位置。这是一项安全功能。
如果您将其提供为
@value
,它将被模型值覆盖。
如果您将其提供为 Value
,它将覆盖模型值。
因此,如果您像这样更改代码,它应该可以工作:
@Html.TextBoxFor(model => item.Filepath, new { Value = item.Filepath, Type = "file" })
我很好奇,有谁知道,为什么它在剃刀中是这样实现的?我发现这种行为非常令人困惑,因为 HTML 属性名称根据定义是大小写不敏感的......