我正在从MVC中的视图页面导入和保存不同的文件。截至目前,我可以上传不同的格式并保存在数据库中。导入文本文件,excel文件和csv文件有3个控制器操作。
我想只有一个文件上传器。根据我们上传的文件,它需要调用该特定函数并保存数据。我怎样才能做到这一点?如果我保留3种不同格式的3个单选按钮来保存/调用特定的动作方法,那么这是一个好主意吗?
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
var extension = Path.GetExtension(file.FileName);
switch(extension.ToLower())
{
case "xls":
return RedirectToAction("ImportFromExcel", "Contact", new { data = file });
case "txt":
return RedirectToAction("ImportText", "Contact", new { data = file });
case "csv":
return RedirectToAction("ImportToCSV", "Contact", new { data = file });
}
return View();
}
答案 0 :(得分:1)
是的,你可以做到这一点。从您的HttpPostedFileBase
对象,您可以了解已发布文件的确切文件扩展名。像:
[HttpPost]
public ActionResult Upload(HttpPostedFileBase file)
{
var extension = Path.GetExtension(file.FileName);
}
然后,相应地,您可以重定向到特定操作,或调用相应的保存方法。
switch (extension.toLower())
{
case "xls":
return RedirectToAction("SaveXlsData", "SomeController", new { data = file });
//or call SaveXlsData(); from here
}
我希望这能让你有所了解。