Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/asp.net-mvc/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Asp.net mvc 同一型号的多个文本框。ValidationMessage无法工作_Asp.net Mvc_Html.textboxfor_Validationmessage - Fatal编程技术网

Asp.net mvc 同一型号的多个文本框。ValidationMessage无法工作

Asp.net mvc 同一型号的多个文本框。ValidationMessage无法工作,asp.net-mvc,html.textboxfor,validationmessage,Asp.net Mvc,Html.textboxfor,Validationmessage,我没有让我所有的文本框的验证工作。每次只使用“一个”。 我正在尝试使用相同的模型属性来创建我的一个变体。有没有人知道解决这个问题的方法,或者更好的方法 @Html.Hidden("AggKPIID", item.AggKPIID) @if (item.Värde.ToString() == "-1" || item.Värde.ToString() == "0") { @Html.TextBoxFor(modelItem => item.Värde

我没有让我所有的文本框的验证工作。每次只使用“一个”。 我正在尝试使用相同的模型属性来创建我的一个变体。有没有人知道解决这个问题的方法,或者更好的方法

@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)
@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})

@Html.ValidationMessageFor(modelItem=>item.Värde) } 其他的 { @Html.TextBoxFor(modeleItem=>item.Värde,新的{@class=“kpiTextbox kpiTextbox edit”,@id=“tb”+id})
@Html.ValidationMessageFor(modelItem=>item.Värde) } @隐藏(“Tidsperiod”,item.Tidsperiod) @Html.Hidden(“Id”,Id)
您应该只能定义一次

@{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)
@{var attrs=null;}
@if(item.Värde.ToString()==“-1”| item.Värde.ToString()==“0”)
{
attrs=new{Value=”“,@class=“kpiTextbox kpiTextbox edit”,@id=“tb”+id};
}
其他的
{
attrs=new{@class=“kpiTextbox-kpiTextbox-edit”,@id=“tb”+id};
}
@TextBoxFor(modeleItem=>item.Värde,attrs)

@Html.ValidationMessageFor(modelItem=>item.Värde)

我也不建议设置
Name

您还没有显示完整的代码,但似乎您正在
foreach
循环中呈现此代码。这将生成重复的
id
属性(无效的html)和
name
属性,因此它不会发回您的收藏。由于名称属性都相同,因此无法匹配关联的验证错误。将视图更改为使用
for
循环(模型需要是
IList
,或者您可以使用自定义
编辑器或模板
。注意,如果
语句正在执行,我不理解您的
操作(没有意义)如果要将
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)
}
for(int i=0,im[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
属性(不是说
new{name=“Värde”}
会做任何事情)

嘿,你说的我使用foreach是对的。我明白你的意思。这是从一个部分视图,在一个表中。这部分只是用于文本框。关于强类型助手,我相信我更改了它们以适应我的更新视图模型。因为它被发送到item.Värde,VM只能接收Värde。如果您可以使用部分视图将控件呈现在表单中,以便回发到属于集合的模型或包含属于集合的属性。您没有发布足够的代码来确保,但应该始终使用
EditorTemplate
for
循环来确保使用索引器正确命名控件(
name=“[0].AggKPIID”
name=“[1].AggKPIID”
等)这是在Ajax beginform中。我没有更新任何视图。只使用onsuccess和onfailure。因此我的操作返回Json。如果更新顺利,我使用jquery显示“ok”图像。但你说得对:)谢谢,伙计。如果我不使用foreach,它将与您的解决方案配合使用。我没有提供足够的信息:)