c# – 无法使用ASP.NET MVC2上传文件
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c# – 无法使用ASP.NET MVC2上传文件,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2403字,纯文字阅读大概需要4分钟。
内容图文
我已将enctype设置为:multipart / form-data但是每当我提交此表单时,Request.ContentType为:application / x-www-form-urlencoded,并且无法从Request.Files中检索上载内容.
这是我的观点:
<% using (Html.BeginForm("Import", "Content", FormMethod.Post, new { enctype = "multipart/form-data" })) { %>
<p>
<%= Html.CheckBox("DeleteExisting")%> Delete Existing Records?
</p>
<p>
<input type="file" name="FileUpload" id="FileUpload" /> Select a dump file.
</p>
<p>
<input type="submit" value="Import Now" />
</p>
<% } %>
这是我的行动:
[HttpPost]
public ActionResult Import(FormCollection fc)
{
string chkDelete = fc["DeleteExisting"];
//string filename = fc["FileUpload"];
if (!chkDelete.Equals("false"))
{
//TODO: delete existing records, if specified
}
var inputFile = Request.Files["FileUpload"];
return View();
}
在PostBack中,填充了“fc”变量,我可以访问复选框的值,并可以获取上传的文件名.
为什么我的enctype会被忽略?
我尝试手动将表单标记放在视图中,属性位于不同的位置,但这没有区别.
我唯一能想到的是这个导入表单嵌套在MasterPage的表单中,但这似乎不应该是一个问题.另外,我把这个表格封好了.
有什么建议?
解决方法:
我相信这里有两个问题:
The only thing I can think is that this Import form is nested within the MasterPage’s form, but that doesn’t seem like it should be a problem. Plus I have this form enclosed properly.
这可能是大多数问题 – 有两件事让我担心:
>嵌套表单不合法(X)HTML – 浏览器非常合理地允许忽略第二个表单声明,并在第一个表单标签处关闭表单 – 这很可能是您所看到的问题.
>当我们处理ASP.NET MVC时,没有理由在主页面中有一个大的封闭形式,这只会妨碍(就像我们在这里看到的那样).
我建议您从母版页中删除表单,只需在实际表单周围需要时添加它们.这可能很好地解决了你所看到的问题.
其次,您需要在操作中添加基于HttpPostedFileBase的参数:
public ActionResult Import(FormCollection fc, HttpPostedFileWrapper FileUpload)
{
string chkDelete = fc["DeleteExisting"];
if (null != FileUpload && 0 < FileUpload.ContentLength) {
// We have an upload.
string filename = FileUpload.FileName;
if (!chkDelete.Equals("false"))
{
//TODO: delete existing records, if specified
}
// Stream file in from FileUpload.InputStream e.g.:
var bytesOriginal = new byte[FileUpload.ContentLength];
FileUpload.InputStream.Read(bytesOriginal, 0, FileUpload.ContentLength);
//Read from the byte array as you would any normal file.
}
return View();
}
我刚刚在一个简单的视图中尝试了这个(没有母版页,没有嵌套的表单),它的行为与我期望的完全一样 – 没有HttpPostedFileWrapper,FormCollection只包含复选框.
内容总结
以上是互联网集市为您收集整理的c# – 无法使用ASP.NET MVC2上传文件全部内容,希望文章能够帮你解决c# – 无法使用ASP.NET MVC2上传文件所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。