Post 从视图中返回隐藏的 HttpPostedFileBase C#
Post Back Hidden HttpPostedFileBase C# From View
所以我有一个屏幕,用户可以在其中创建电子邮件并附加文件。当他们点击发送时,我想将他们带到一个屏幕,他们可以在发送之前查看电子邮件。 (此查看屏幕是只读的,所有数据都在隐藏输入中)
我可以将所有数据传递到“审阅”屏幕,但是当我单击“发送”并提交表单时,我丢失了对我上传文件的引用,而其他一切都很好。
我知道我可以将文件存储在 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++;
}
当我检查 post 上的模型时,HttpPostedFileBase[] Files
有两个对象,但都为空。我觉得它的 InputStream
部分不允许它工作,因为它本身是一个对象。
有谁知道如何使这种方法起作用或有更好的文件维护解决方案吗?
您不能预设或更改输入文件元素。这对于通过使用 javascript 更改输入文件元素来阻止上传任何文件无效,例如
如果可以,任何人都可以做到并从您的本地驱动器上传任何文件。
您可以找到 here 的描述没有显示任何 'set value' 功能。
所以我有一个屏幕,用户可以在其中创建电子邮件并附加文件。当他们点击发送时,我想将他们带到一个屏幕,他们可以在发送之前查看电子邮件。 (此查看屏幕是只读的,所有数据都在隐藏输入中)
我可以将所有数据传递到“审阅”屏幕,但是当我单击“发送”并提交表单时,我丢失了对我上传文件的引用,而其他一切都很好。
我知道我可以将文件存储在 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++;
}
当我检查 post 上的模型时,HttpPostedFileBase[] Files
有两个对象,但都为空。我觉得它的 InputStream
部分不允许它工作,因为它本身是一个对象。
有谁知道如何使这种方法起作用或有更好的文件维护解决方案吗?
您不能预设或更改输入文件元素。这对于通过使用 javascript 更改输入文件元素来阻止上传任何文件无效,例如
如果可以,任何人都可以做到并从您的本地驱动器上传任何文件。
您可以找到 here 的描述没有显示任何 'set value' 功能。