0

目前,我有这个:

public ActionResult Add(FormCollection form, HttpPostedFileBase fr,  HttpPostedFileBase en, HttpPostedFileBase es)
{
   Upload(fr, "fr");
   Upload(en, "en");
   Upload(es, "es");
   ...
}

这适用于我们目前正在做的事情,但刚刚了解到系统需要能够添加其他语言的新要求。这是我唯一有问题的部分。

我试过:

public ActionResult Add(FormCollection form, HttpPostedFileBase[] fr)
{
   foreach(var file in fr)
   {
     Upload(file, "I'mStuck");
   }
   ...
}

作为一项测试,但它只有 1 个元素,并且是 id/name = fr 的元素。有道理,但对我需要的东西不是特别有帮助。

我可以做:

for (string file in Request.Files)
{
   ...
}

这可以很好地处理上传组件,但问题是除非我可以强制他们针对whatever_langabbreviation.extension 文件格式进行标准化,我不能,否则我将无法知道语言缩写是什么。

如何获取控制器中输入 type=file 对象的 id/name 字段?

4

1 回答 1

0

我实际上是不正确的。返回的字符串实际上是 id 或 name(想想 name,但考虑到我通常将 id/name 配对,它可以工作)。

对于最初呈现视图的控制器,我做了:

List<Languages> langs = db.Languages.ToList();

viewmodel.Languages = langs;

return View(viewmodel);

在视图本身中:

foreach(Language lang in Model.Languages)
{
  // Label
  <input type="file" id="@lang.Abbreviation" name="@lang.Abbreviation" />
}

在后期活动中:

foreach(string file in Request.Files)
{
  HttpPostedFileBase fb = Request.Files[file];
  Upload(fb, file);
}

它按应有的方式处理(上传是一个仅将新项目添加到另一个表的函数。

于 2014-07-04T21:03:13.273 回答