我没有让所有文本框的验证工作。只有在使用" one"一次。 我尝试对我的变体使用相同的模型属性。有没有人知道这个的解决方案,或者更好的方法呢?
@Html.Hidden("AggKPIID", item.AggKPIID)
@if (item.Värde.ToString() == "-1" || item.Värde.ToString() == "0")
{
@Html.TextBoxFor(modelItem => item.Värde, new { Value = "", Name = "Värde", @class = "kpiTextbox kpiTextbox-edit", @id = "tb"+Id })
<br />
@Html.ValidationMessageFor(modelItem => item.Värde)
}
else
{
@Html.TextBoxFor(modelItem => item.Värde, new { @class = "kpiTextbox kpiTextbox-edit", @id = "tb" + Id })
<br />
@Html.ValidationMessageFor(modelItem => item.Värde)
}
@Html.Hidden("Tidsperiod", item.Tidsperiod)
@Html.Hidden("Id", Id)
答案 0 :(得分:1)
您尚未显示完整的代码,但似乎您在foreach
循环中呈现此内容。这将生成重复的id
属性(无效的html)和name
属性,因此无论如何它都不会回发到您的收藏集。由于名称属性都相同,因此无法匹配关联的验证错误。更改您的视图以使用for
循环(模型必须为IList<T>
,或者您可以使用自定义EditorTemplate
。请注意,我不了解您{{1} }语句正在做(没有意义),如果你想将if
的值改为空字符串,如果它的值是Värde
或0
,那么你可以在将模型传递给视图之前的控制器。
-1
并且始终使用强类型助手,并且不要尝试更新for(int i = 0, i < Model.Count; i++)
{
@Html.HiddenFor(m => m[0].AggKPIID)
@Html.TextBoxFor(m => m[0].Värde, new { @class = "kpiTextbox kpiTextbox-edit" })
@Html.ValidationMessageFor(m => m[0].Värde)
@Html.HiddenFor(m => m[0].Tidsperiod)
@Html.HiddenFor(m => m[0].Id)
}
属性(不是name
无论如何都会做任何事情)
答案 1 :(得分:0)
你应该只能定义一次
@{var attrs = null;}
@if (item.Värde.ToString() == "-1" || item.Värde.ToString() == "0")
{
attrs = new { Value = "", @class = "kpiTextbox kpiTextbox-edit", @id = "tb" + Id };
}
else
{
attrs = new { @class = "kpiTextbox kpiTextbox-edit", @id = "tb" + Id };
}
@Html.TextBoxFor(modelItem => item.Värde, attrs)
<br />
@Html.ValidationMessageFor(modelItem => item.Värde)
我也不建议设置Name
。