【问题标题】:MVC Pass element id from view to controllerMVC 将元素 id 从视图传递到控制器
【发布时间】:2015-07-16 18:04:13
【问题描述】:
foreach (var item in Model)
{
    using (Html.BeginForm("PreviewImage", "Music", FormMethod.Post, new { @enctype = "multipart/form-data" }))
    {
        @Html.AntiForgeryToken()

        <input type="file" class="upload-image" id="upload-image-file_@item.Id" name="file" accept="image/*">
        <button class="btn btn-default" id="bt_@item.Id" style="display: none" type="submit"></button>
    }
}

如何将文件 ID 传递给控制器​​?

【问题讨论】:

  • 需要澄清 - 一旦控制器从他们的系统中选择了文件,你想将文件路径传递给控制器​​吗?

标签: asp.net-mvc forms file element


【解决方案1】:

假设您要传回上传图片的路径 - 在控制器内部,请使用以下内容:

if (Request.Files.Count > 0)
{
         var file = Request.Files[0];

         if (file != null && file.ContentLength > 0)
         {
            var fileName = Path.GetFileName(file.FileName);
            var serverPath = Path.Combine(Server.MapPath("~/Images/"), fileName);
            file.SaveAs(serverPath);

         }
}

假设您正在谈论 @item.Id 变量,您将附加 Id,我将在此处添加 @item.Id

using (Html.BeginForm("PreviewImage", "Music", FormMethod.Post, new { @enctype = "multipart/form-data", @itemId = @item.Id }))

然后对你的控制器进行相应的修改。

【讨论】:

  • 我需要将“upload-image-file_@item.Id”传递给控制器​​。这可能吗?我知道如何传递模型 ID,但我想知道您是否可以使用元素来传递。
  • 您只需将“upload-image-file_”附加到您通过 BeginForm 调用传递的 id。
  • 非常感谢。这样做然后 PreviewImage/" + @item.Id.ToString() 在控制器中获取正确的表单 ID。
猜你喜欢
  • 1970-01-01
  • 2015-05-06
  • 1970-01-01
  • 2022-01-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-06-29
  • 1970-01-01
相关资源
最近更新 更多