Asp.net mvc 4 当我尝试在MVC4中上载照片时,没有上载任何文件
事实上,我是MVC新手,我已经开始制作新闻页面。在此页面标题中,新闻的正文及其照片路径存储在DB中,但照片将保存在服务器文件夹中。因此,我为DB创建了一个模型:Asp.net mvc 4 当我尝试在MVC4中上载照片时,没有上载任何文件,asp.net-mvc-4,file-upload,model,Asp.net Mvc 4,File Upload,Model,事实上,我是MVC新手,我已经开始制作新闻页面。在此页面标题中,新闻的正文及其照片路径存储在DB中,但照片将保存在服务器文件夹中。因此,我为DB创建了一个模型: public class NewsEntry { public int Id { get; set; } [Required(ErrorMessage = "Please enter a suitable title for your news")] public string
public class NewsEntry
{
public int Id { get; set; }
[Required(ErrorMessage = "Please enter a suitable title for your news")]
public string title { get; set; }
[Required(ErrorMessage = "Please enter the body news")]
public string body { get; set; }
public string image { get; set; }
public DateTime dateAdded { get; set; }
}
还有另一个照片模型:
public class UploadImageViewModel
{
public string Photo { get; set; }
public HttpPostedFileBase PhotoUpload { get; set; }
}
之后,我在控制器中做了如下操作:
private UploadImageViewModel model = new UploadImageViewModel();
[HttpPost]
public ActionResult Create(NewsEntry entry)
{
string uploadPath = "~/images/NewsImages";
var file = model.PhotoUpload;
if (model.PhotoUpload.ContentLength > 0)
{
var fileName = Path.GetFileName(model.PhotoUpload.FileName);
var path = Path.Combine(Server.MapPath(uploadPath), fileName);
model.PhotoUpload.SaveAs(path);
model.Photo = uploadPath + fileName;
entry.image = model.Photo;
}
var profile = AutoMapper.Mapper.Map<NewsEntry>(model);
var validTypes = new[] { "image/jpeg", "image/pjpeg", "image/png", "image/gif" };
if (!validTypes.Contains(model.PhotoUpload.ContentType))
{
ModelState.AddModelError("Photo Upload", "Please Upload either a JPG, GIF, or PNG image.");
}
if (ModelState.IsValid)
{
entry.dateAdded = DateTime.Now;
_db.Entries.Add(entry);
_db.SaveChanges();
}
return RedirectToAction("Index");
}
private UploadImageViewModel=new UploadImageViewModel();
[HttpPost]
公共操作结果创建(新闻条目)
{
字符串uploadPath=“~/images/newsmimages”;
var file=model.PhotoUpload;
如果(model.PhotoUpload.ContentLength>0)
{
var fileName=Path.GetFileName(model.PhotoUpload.fileName);
var path=path.Combine(Server.MapPath(uploadPath),文件名);
model.PhotoUpload.SaveAs(路径);
model.Photo=上传路径+文件名;
entry.image=model.Photo;
}
var profile=AutoMapper.Mapper.Map(模型);
var validTypes=new[]{“image/jpeg”、“image/pjpeg”、“image/png”、“image/gif”};
如果(!validTypes.Contains(model.PhotoUpload.ContentType))
{
AddModelError(“照片上传”,“请上传JPG、GIF或PNG图像”);
}
if(ModelState.IsValid)
{
entry.dateAdded=DateTime.Now;
_db.Entries.Add(条目);
_db.SaveChanges();
}
返回操作(“索引”);
}
最后添加了此操作的视图:
@Html.ValidationSummary()
@using(Html.BeginForm()) {
<p>Please enter your news title: </p>
@Html.TextBox("title")
<br /><br />
<p>Please enter your news body: </p>
@Html.TextArea("body",new{rows=10,cols=45})
<br /><br />
<p>Please enter the source of your news: </p>
@Html.TextBox("Source")
<br /><br />
<div class="editor-field">
<label for="PhotoUpload">Upload an image for your news </label>
@Html.TextBox("PhotoUpload", null, new { type="file" })
</div>
<br /><br />
<input type="submit" value="Submit the news" >
}
@Html.ValidationSummary()
@使用(Html.BeginForm()){
请输入您的新闻标题:
@Html.TextBox(“标题”)
请输入您的新闻正文:
@TextArea(“body”,新的{rows=10,cols=45})
请输入新闻来源:
@Html.TextBox(“源”)
上传新闻图片
@TextBox(“PhotoUpload”,null,new{type=“file”})
}
然而,没有回复照片,而且AutoMapper也有问题。我该怎么办?
如果有人能解决我的问题,我将不胜感激。我想你的问题是
@using(Html.BeginForm())
在MVC应用程序中上传文件(照片或图像)的新手中,这是一个常见的错误
因此,只需将上述行替换为以下行:
@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
这里有一些参考资料,我相信会对您有所帮助:
我想你的问题是
@using(Html.BeginForm())
在MVC应用程序中上传文件(照片或图像)的新手中,这是一个常见的错误
因此,只需将上述行替换为以下行:
@using (Html.BeginForm("FileUpload", "Home", FormMethod.Post,
new { enctype = "multipart/form-data" }))
这里有一些参考资料,我相信会对您有所帮助:
这看起来是一个类似的解决方案。这看起来是一个类似的解决方案。