目前,我有这个:
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字段?
答案 0 :(得分:0)
我其实不对。返回的字符串实际上是id或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);
}
它按照预期处理(上传是一个只是将新项目添加到另一个表格的函数。