C# 隐藏字段不将部分视图中的值存储到复杂对象数组中
我无法在模型中获得一个复杂类型的数组来存储其值,该数组在控制器中的两个操作之间分配 一旦组成了模型(包括复杂类型的数组(包括IsAssigned),视图引擎就开始呈现HTML/Razor脚本。在视图中,脚本中有一部分用于处理操纵复杂类型的控件的显示。它是一个“For i”循环,在复杂类型的数组中循环 在这个循环中,有一个razor命令HiddenFor用于属性IsAssigned,它包含在复杂类型数组中 在渲染局部视图的循环中执行第二步。在该视图中,有两个单选按钮链接到阵列位置的IsAssigned boolean?财产。如果用户选择yes,则属性将变为true,而非false 视图完全渲染且用户做出选择后,控制器中的下一个动作方法将被激活,模型将传递给它。在这里,我希望用户对IsAssigned属性的选择能够持久,但事实并非如此 下面是循环代码和局部视图代码 环路 for(int i=0;iC# 隐藏字段不将部分视图中的值存储到复杂对象数组中,c#,html,asp.net-mvc,razor,C#,Html,Asp.net Mvc,Razor,我无法在模型中获得一个复杂类型的数组来存储其值,该数组在控制器中的两个操作之间分配 一旦组成了模型(包括复杂类型的数组(包括IsAssigned),视图引擎就开始呈现HTML/Razor脚本。在视图中,脚本中有一部分用于处理操纵复杂类型的控件的显示。它是一个“For i”循环,在复杂类型的数组中循环 在这个循环中,有一个razor命令HiddenFor用于属性IsAssigned,它包含在复杂类型数组中 在渲染局部视图的循环中执行第二步。在该视图中,有两个单选按钮链接到阵列位置的IsAssign
<div class="field inline spacer20">
@{
var kitTypeAssign = String.Format("{0}{1}", Model.KitType.Code, "Assign");
var identityOfAssigned = new { id = @kitTypeAssign, @Name = "IsAssigned" + Model.KitType.Code };
var kitTypeNoAssign = String.Format("{0}{1}", Model.KitType.Code, "NoAssign");
var identityOfNoAssigned = new { id = @kitTypeNoAssign, @Name = "IsAssigned" + Model.KitType.Code };
var sectionTitle = string.Format("{0} {1}", PromptText.Assign_185B7133DB22230701A857C059360CC2.ToLocalizableString(), Model.KitType.Description);
@Html.Label(sectionTitle, new { @class = "colon" })
@Html.RadioButtonFor(m => m.IsAssigned, true, @identityOfAssigned)
<label for=@kitTypeAssign>@Html.PromptFor(PromptText.Yes_93CBA07454F06A4A960172BBD6E2A435)</label>
@Html.RadioButtonFor(m => m.IsAssigned, false, @identityOfNoAssigned)
<label for=@kitTypeNoAssign>@Html.PromptFor(PromptText.No_BAFD7322C6E97D25B6299B5D6FE8920B)</label>
}
</div>
@{
var kittypesign=String.Format(“{0}{1}”,Model.KitType.Code,“Assign”);
var identityOfAssigned=new{id=@kittypesign,@Name=“IsAssigned”+Model.KitType.Code};
var kitTypeNoAssign=String.Format(“{0}{1}”,Model.KitType.Code,“NoAssign”);
var identityOfNoAssigned=new{id=@kitTypeNoAssign,@Name=“IsAssigned”+Model.KitType.Code};
var sectionTitle=string.Format(“{0}{1}”,PrompText.Assign_185B7133DB22230701A857C059360CC2.ToLocalizableString(),Model.KitType.Description);
@Label(sectionTitle,new{@class=“colon”})
@RadioButton(m=>m.IsAssigned,true,@identityofasigned)
@Html.PromptFor(promptext.Yes_93CBA07454F06A4A960172BBD6E2A435)
@RadioButton(m=>m.IsAssigned,false,@IdentityOfNoAsigned)
@Html.PromptFor(PromptText.No_BAFD7322C6E97D25B6299B5D6FE8920B)
}
我认为问题在于部分视图没有正确地为其HTML输入元素的名称添加前缀,因此ModelBinder不知道如何将它们绑定回数组。尝试将正确的前缀显式传递给分部:
@Html.Partial(
"_KitTypeDispensing",
Model.KitTypeAssignment[i],
new ViewDataDictionary { TemplateInfo = new TemplateInfo {
HtmlFieldPrefix = Html.NameFor(m => m.KitTypeAssignment[i]).ToString() }
}
)
进一步阅读:
用实际代码代替图像,谢谢你花时间考虑这个问题并提供答案。现在正在调查这件事。将很快收到反馈。:)这是问题的一部分。问题的第二部分是包含隐藏字段,一旦删除,所有字段都会很好地工作。谢谢你,乔治!很高兴我能帮上忙:) @Html.Partial(
"_KitTypeDispensing",
Model.KitTypeAssignment[i],
new ViewDataDictionary { TemplateInfo = new TemplateInfo {
HtmlFieldPrefix = Html.NameFor(m => m.KitTypeAssignment[i]).ToString() }
}
)