【问题标题】:Post Back Hidden HttpPostedFileBase C# From View从视图中回发隐藏的 HttpPostedFileBase C#
【发布时间】:2018-03-22 13:47:19
【问题描述】:

所以我有一个屏幕,用户可以在其中构建、发送电子邮件和附加文件。当他们点击发送时,我想把他们带到一个屏幕,他们可以在发送之前查看电子邮件。 (此审查屏幕是只读的,所有数据都在隐藏输入中)

我可以将我的所有数据传递到审核屏幕,但是当我点击发送并提交表单时,我失去了对我上传文件的引用,而其他一切都很好。

我知道我可以将文件存储在 TempData 中并再次检索它们,但我认为我可以在视图上执行此操作。

我在评论视图中尝试隐藏HttpPostedFileBase[] Files 的输入

int filePos = 0;
foreach (var n in Model.Files)
{
    <input class="hidden" name="Files[@filePos].ContentLength" value="@Model.Files[filePos].ContentLength" />
    <input class="hidden" name="Files[@filePos].ContentType"value="@Model.Files[filePos].ContentType" />
    <input class="hidden" name="Files[@filePos].FileName" value="@Model.Files[filePos].FileName"/>
    <input class="hidden" name="Files[@filePos].InputStream" value="@Model.Files[filePos].InputStream"/>
    filePos++;
}

当我在回发时检查模型时,HttpPostedFileBase[] Files 有两个对象,但都是空的。我觉得它的 InputStream 部分不允许它工作,因为它本身就是一个对象。

有谁知道如何使用此方法或有更好的文件维护解决方案?

【问题讨论】:

标签: c# html asp.net-mvc file httppostedfilebase


【解决方案1】:

您不能预设或更改输入文件元素。这对于通过使用 javascript 更改输入文件元素来阻止上传任何文件是无效的,例如。

如果可以的话,任何人都可以这样做并从您的本地驱动器上传任何文件。

您可以找到here 的描述没有显示任何“设定值”功能。

【讨论】:

  • 是的,我认为你不能这样做。我会坚持将它们添加到 TempData
猜你喜欢
  • 2017-07-27
  • 2017-02-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-07
  • 2013-04-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多