我已经完成了使用表单将照片上传到MVC (照片作为参数发送给AJAX调用)控制器的测试,现在需要执行相同的操作,但需要进行修改:
有效的原始源是:
<form action="/Home/Upload" method="post" enctype="multipart/form-data">
<label for="photo">Photo:</label>
<input type="file" name="photo" id="photo" />
<input id="uploadbtn" type="submit" value="Upload" />
</form>和来自控制器的操作代码:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase photo)
{
// Verify that the user selected a file
if (photo != null && photo.ContentLength > 0)
{
// extract only the fielname
var fileName = Path.GetFileName(photo.FileName);
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/C:/poze"), fileName);
photo.SaveAs(path);
}
return Json(new { Success = true });
}这行得通,但在这种情况下行不通:
@using (Html.BeginForm(null, null, FormMethod.Post, new { enctype = "multipart/form-data" }))
{
<div class="control-group">
<label class="control-label" for="photo">Photo:</label>
<div class="controls">
<input type="file" name="photo" id="photo" />
</div>
</div>
}动作代码是:
public ActionResult EditModule(INT ID, string Description, HttpPostedFileBase photo)
{
if (photo != null && photo.ContentLength > 0)
{
// extract only the fielname
var fileName = Name + ".png";
// store the file inside ~/App_Data/uploads folder
var path = Path.Combine(Server.MapPath("~/Content/Module Previews"), fileName);
photo.SaveAs(path);
}
else
{
Status += "Error image";
Success = false;
}
}当我调试EditModule时,照片的值是空的。我确信javascript和ajax调用没有问题。
发布于 2013-08-21 15:24:13
您已将控制器和操作名称设置为null,因此表单不知道要发送到何处。将前两个参数更改为操作名称和控制器名称:
@using (Html.BeginForm("Upload", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))发布于 2013-08-21 15:28:43
当我调试EditModule时,照片的值为空。我确信javascript和ajax调用没有问题。
您不能使用ajax上传二进制文件。你要么使用<IFRAME>,要么使用Flash插件。
有关更多信息,请参阅此答案:https://stackoverflow.com/a/6462673/70386
发布于 2014-11-14 08:51:09
当你把null放在action和controller中时,MVC使用当前的action和controller。
https://stackoverflow.com/questions/18351101
复制相似问题