【发布时间】:2020-01-30 21:48:19
【问题描述】:
我想在我的 razor 视图中使用 foreach 填充表单的隐藏输入。是这样的:
@foreach (var commodity in ((FilterViewModel)ViewBag.ViewModel).commodities)
{
Html.Hidden("commodities", commodity);
}
这是我的 ViewModel:
public class FilterViewModel
{
public string commodityType { get; set; }
public string department { get; set; }
public string repository { get; set; }
public string[] commodities { get; set; }
public string[] purchaseReportTypes { get; set; }
public string dateValue_1 { get; set; }
public string dateValue_2 { get; set; }
}
尽管 foreach lopps 通过项目,隐藏的输入并没有在渲染后添加到我的 HTML 源代码中。但是这个工作得很好,我不知道为什么Html.Hidden 不起作用:
@foreach (var commodity in ((FilterViewModel)ViewBag.ViewModel).commodities)
{
<input type="hidden" id="commodities" name="commodities" value="@commodity" />
}
【问题讨论】:
-
你在FilterViewModel上有一个ToString实现吗?尝试将commodity.commodityType(或任何字符串属性)放入方法调用中。在工作代码中设置了什么值?
-
在您的 html 中有多个相同的
id值可能会导致问题。 -
@PeterSmith 我猜选择选择器会做同样的事情,但可能我错了!
-
有很多答案警告多个相同 ID 的危险;例如,参见this。尝试改用
class, -
我添加了一个替代答案,以避免多个相同 ID 的问题。
标签: c# html asp.net-mvc razor