【问题标题】:Multiple forms with single file input asp.net具有单个文件输入 asp.net 的多个表单
【发布时间】:2018-06-29 06:59:13
【问题描述】:

好的,所以我得到了这个接受模型 IEnumerable 的视图,并且 Model 内部的 foreach SomeModel 呈现了一个新的局部视图,其中它传递了单个 SomeModel。在这个局部视图中,我得到了一个表单,它使我能够编辑或添加新的 SomeModel。问题是这些表格有一个文件输入。只有第一个表单输入文件有效,我意识到为什么所有表单共享相同的输入文件 ID 和标签。所以我尝试动态添加它们:

    @{ 
        string idname = "file" + Model.Id;
    }
    <label for="@idname"><i class="far fa-image main-cat-icon"></i></label>
    <input type="file" name="@idname"/>

但现在标签无法按预期工作。出于美学原因,我隐藏了输入本身并将标签作为图标以适合我的应用程序。我看到display: none; 会导致问题,所以我使用了:

.main-acp-button-cat input[type="file"] {
    opacity: 0;
    width: 0px;
    height: 0px;
    float: left;
}

我的控制器期望 public ActionResult ActionTest(SomeModel 模型,HttpPostedFileBase 文件)

还有其他方法吗?还是我在正确的轨道上只是错过了什么?

谢谢;)

【问题讨论】:

    标签: c# asp.net asp.net-mvc forms


    【解决方案1】:

    假设“现在标签无法按预期工作”实际上意味着“现在当我单击标签时,它不再将焦点设置为文件输入元素”.. .

    这是因为label 元素的for 属性引用了目标元素的id 属性。你没有给你的input 元素一个id 属性,所以没有什么可以匹配的。

    你有两个选择。

    1. 删除labelfor 属性并将input 元素放在label 元素的主体中。
    2. id 属性分配给与labelfor 属性值匹配的input 元素。

    【讨论】:

    • 当然是很简单的事情,我看得太累了。万分感谢。我在设置 id 和 for 时遇到了问题,但我只是跳到了你的第二个建议,这就像一个魅力。再次感谢你。 ^^
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多