Asp.net mvc 4 当我尝试在MVC4中上载照片时,没有上载任何文件

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

事实上,我是MVC新手,我已经开始制作新闻页面。在此页面标题中,新闻的正文及其照片路径存储在DB中,但照片将保存在服务器文件夹中。因此,我为DB创建了一个模型:

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" }))
    
    这里有一些参考资料,我相信会对您有所帮助:


  • 这看起来是一个类似的解决方案。这看起来是一个类似的解决方案。