我上传文件时遇到问题。我想从修改视图
上传它 <%
using (Html.BeginForm("edit","profile",FormMethod.Post, new { enctype="multipart/form-data" }))
{%>
<%: Html.ValidationSummary(true) %>
<%: ViewData["ErrorMessage"] %>
<fieldset>
<legend>Fields</legend>
<div class="editor-label">
<%: Html.LabelFor(model => model.Image) %>
</div>
<div class="editor-field">
<input type="file" id="Image" name="Image" />
<label id="LabelErrorImage" class="errorMessage" />
</div>
<p>
<input type="submit" value="Save" onclick="return Validate(); return false;"/>
</p>
</fieldset>
<% } %>
我想使用 HttpPostedFileBase 类。我的编辑操作:
[Authorize]
[HttpPost]
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Edit(string id, HttpPostedFileBase file, FormCollection formValues)
{
if (ModelState.IsValid)
{
if (file != null && file.ContentLength > 0)
{
CustomHelpers.createFolder();
var tmpPath = MyConfig.UPLOAD_FILE_PATH + "/" + Membership.GetUser().ProviderUserKey.ToString();
var path = Path.Combine(Server.MapPath(MyConfig.UPLOAD_FILE_PATH), "Avatar");
var fileExtension = Path.GetExtension(file.FileName);
file.SaveAs(path);
user.Image = "Avatar";
}
adventureDB.SaveChanges();
return RedirectToAction("Index");
}
}
但我总是把文件对象清空,为什么?????你有任何想法,建议为什么它可以这样工作?可能有问题我如何将文件值传递给我的编辑操作?
修改
当我删除时,它真的很奇怪
using (Html.BeginForm("Index","Profile",FormMethod.Get, new { enctype="multipart/form-data" }))
页面来源仍然有:
<body>
<form method="post" action="6111e591-b92d-4bcb-b214-ab8f664b35f9" id="form1">
我的意思是我无法更改标签但不明白为什么:/
答案 0 :(得分:1)
尝试更改: -
public ActionResult Edit(string id, HttpPostedFileBase file,
FormCollection formValues)
于: -
public ActionResult Edit(string id, HttpPostedFileBase image,
FormCollection formValues)
输入的名称为image
<input type="file" id="Image" name="Image" />
修改强> 说实话,其他东西正在阻止图像的绑定。这是您发布的整个表格吗?
要测试的一些事情
name=image
的内容。<form action="/profile/index" method="post" enctype="multipart/form-data">
答案 1 :(得分:1)
在以下情况下解决此问题:
然后:
现在应该可以了。
答案 2 :(得分:0)
嗯,在您的视图中,您将文件输入命名为“image”,但您的操作方法接受名为“file”的参数。重命名其中一个,它应该工作。