0

我有一个 MVC 应用程序,这就是我打算做的。我有一个字段应该存储我上传到服务器的文件的路径。这是模型:

 int ID
 string Title
string Path

这是我的控制器:

    public ActionResult Create(Book book)
        {
            if (ModelState.IsValid)
            {
               db.Books.Add(book);
                db.SaveChanges();
                return RedirectToAction("Index");  
            }

        ViewBag.CreatedBy = new SelectList(db.Users, "ID", "UserName", book.CreatedBy);
        return View(book);
    }

我找不到在 MVC 3 中上传文件的控件。我不知道是否有解决方法,因为所有可用的解决方案都将文件单独视为一个单独的实体。

任何示例代码将不胜感激。

4

1 回答 1

2

可以发布上传的文件以及其他表单变量。首先,声明你的控制器:

public ActionResult Create(Book book, HttpPostedFileBase file)
{
    if (ModelState.IsValid)
    {
        db.Books.Add(book);
        db.SaveChanges();
        return RedirectToAction("Index");  
    }

    ViewBag.CreatedBy = new SelectList(db.Users, "ID", "UserName", book.CreatedBy);
    return View(book);
}

然后以您的形式:

@using (Html.BeginForm("Create", "Book", FormMethod.Post, new {enctype = "multipart/form-data"}))
{
    @Html.TextBoxFor(m => m.Title)
    <input type="file" id="file" name="file" />
    <input type="submit" value="Upload" />
}

这将发布文件和“标题”。然后你可以对文件做你想做的事,在 file.FileName 中访问它的文件名,或者将它保存在某个地方。关键是将表单 enctype 设置为“multipart/form-data”。有关其他示例,请参阅本教程

于 2013-01-06T17:02:20.573 回答