Asp.net mvc 3 从模型中定义的输入获取ID

Asp.net mvc 3 从模型中定义的输入获取ID,asp.net-mvc-3,model,Asp.net Mvc 3,Model,不知道标题有多清楚。 我有文件上传脚本。使用javascript动态创建一个名为testdata的输入字段。为用户决定上载的每个文件创建一个输入字段。到目前为止,我的模型只得到字段的值 public string testdata { get; set; } 稍后在我的控制器中,我将获取值并将其写入文件。 问题是,当上传多个文件时,控制器从所有输入中收集值,并将它们全部写入每一行。我想要的是有一个从每个输入(每次上传)值单独的行。控制器只执行我要求它执行的操作。我不知道如何访问输入字段的id

不知道标题有多清楚。 我有文件上传脚本。使用javascript动态创建一个名为testdata的输入字段。为用户决定上载的每个文件创建一个输入字段。到目前为止,我的模型只得到字段的值

 public string testdata { get; set; }
稍后在我的控制器中,我将获取值并将其写入文件。 问题是,当上传多个文件时,控制器从所有输入中收集值,并将它们全部写入每一行。我想要的是有一个从每个输入(每次上传)值单独的行。控制器只执行我要求它执行的操作。我不知道如何访问输入字段的id。我知道我需要改变我的模式,但不知道如何改变。任何帮助都将不胜感激。谢谢

控制器,如果不是很清楚:

        [HttpPost]
    public ActionResult Index(UploadsModel model, IEnumerable<HttpPostedFileBase> files)
    {
        string uploadDir = Server.MapPath("~/App_Data/uploads");
        foreach (string fileKey in Request.Files)
        {
            HttpPostedFileBase file = Request.Files[fileKey];
            StreamWriter tw = System.IO.File.AppendText(Path.Combine(uploadDir, "post_data.txt"));
            tw.WriteLine(System.DateTime.Now + " " + file.FileName + " " + model.testdata);
            tw.Close();
            file.SaveAs(Path.Combine(uploadDir, file.FileName));
        }

        //could go somewhere else...
        return RedirectToAction("Index");
    }
[HttpPost]
公共操作结果索引(上载模型、IEnumerable文件)
{
字符串uploadDir=Server.MapPath(“~/App_Data/uploads”);
foreach(Request.Files中的字符串fileKey)
{
HttpPostedFileBase file=Request.Files[fileKey];
StreamWriter tw=System.IO.File.AppendText(Path.Combine(uploadDir,“post_data.txt”);
tw.WriteLine(System.DateTime.Now+“”+file.FileName+“”+model.testdata);
tw.Close();
SaveAs(Path.Combine(uploadDir,file.FileName));
}
//可以去别的地方。。。
返回操作(“索引”);
}
编辑:
找到了一个解决办法。将为每个常规字段动态创建一个隐藏字段。将第一个字段的值传递给它,将在我的模型中创建新属性,在上载和保存时,我将比较文件名和隐藏字段值。

理论上,IEnumerable文件应该位于UploadsModel对象中。你能显示视图吗?视图是不相关的。在这种情况下,表单本身是在客户端创建的。这与视图创建控制器获取的ID无关。如果这些不正确,则控制器无法序列化传递给它的数据。我希望访问ID,而不是创建ID。它已经由javascript创建。这是您的ID需要与ViewModel匹配的地方,您需要在UploadsModel中使用字符串形式的FileInput属性,然后执行@Html.EditorFor(model=>model.FileInput),然后这将作为UploadsModel中的值自动发送。