首先,我是新手,所以请原谅我的无知......
在我的表中,我有一个列,我想将UNC路径存储到PDF文件。我想在我的视图上有一个按钮,允许用户浏览并选择与记录关联的文件。 (在场景后面,我将文件复制到指定的文件位置并重命名)我找到了许多如何浏览文件的例子,但我无法弄清楚如何让它在Create和编辑视图并将其余数据保存回数据库。
在我的Create视图中,我已经修改了BeginForm:
@using (Html.BeginForm("FileUploadCreate", "GL", FormMethod.Post, new { enctype = "multipart/form-data" }))
我的专栏用于存储我的PDF位置:
@Html.TextBoxFor(Model => Model.PDF, null, new { type="file"})
我的控制器有:
[HttpPost]
public ActionResult FileUploadCreate(HttpPostedFileBase PDF)
{
string path = "";
if (PDF != null)
{
if (PDF.ContentLength > 0)
{
string fileName = Path.GetFileName(PDF.FileName);
string directory = "c:\\temp\\Accruals\\PDF";
path = Path.Combine(directory, fileName);
PDF.SaveAs(path);
}
}
return RedirectToAction("Index");
}
这一切都正常,文件被复制到相应的测试文件夹。但是,我的记录永远不会保存到数据库中,因为我的实际创建帖子永远不会被命中:
[HttpPost]
public ActionResult Create(NonProject myRecord)
{
try
{
_repository.AddNonProject(myRecord);
return RedirectToAction("Index");
}
catch
{
return View();
}
}
我需要做什么?如何在我的Create中引用我的NonProject对象?我可以在BeginForm中添加一些内容以将其传递给FileUploadCreate吗?
答案 0 :(得分:1)
将发布的文件作为参数添加到Create
操作方法中。保存两者(文件到磁盘和表单值到DB)
[HttpPost]
public ActionResult Create(NonProject myRecord, HttpPostedFileBase PDF)
{
try
{
//Save PDF here
// Save form values to dB
}
catch
{
//Log error show the view with error message
ModelState.AddModelError("","Some error occured");
return View(myRecord);
}
}
确保您的表单 操作 方法设置为Create
答案 1 :(得分:0)
您应该将所有数据发布到一个操作:
视图模型:
public class NonProject
{
public HttpPostedFileBase PDF{get;set;}
public string SomeOtherProperty {get;set;}
.....
}
查看:
@using (Html.BeginForm("FileUploadCreate", "GL", FormMethod.Post, new { enctype = "multipart/form-data" }))
{
@Html.TextBoxFor(Model => Model.PDF, null, new { type="file"})
@Html.TextBoxFor(Model => Model.SomeOtherProperty)
etc..
}
控制器:
[HttpPost]
public ActionResult FileUploadCreate(NonProject myRecord)
{
string path = "";
if (myRecord.PDF != null)
{
if (myRecord.PDF.ContentLength > 0)
{
string fileName = Path.GetFileName(myRecord.PDF.FileName);
string directory = "c:\\temp\\Accruals\\PDF";
path = Path.Combine(directory, fileName);
myRecord.PDF.SaveAs(path);
}
}
try
{
_repository.AddNonProject(myRecord);
return RedirectToAction("Index");
}
catch
{
return View();
}
return RedirectToAction("Index");
}