我在Razor-View中动态创建控件。在这里,我根据对象中的数据向DOM添加一些控件。但是当我尝试添加一个单选按钮时,除非值不变,否则我不会得到它。如果我动态添加两个具有不同值的单选按钮,FormCollection不会包含这些控件。
请帮助我,因为我无法理解这种行为。理想情况下,它应该刚刚收集了两个单选按钮。
foreach (var property in propertiesInner)
{
if (property.Name == "OptionQuestion")
{
if (@item.ObjQuestions.QuestionType == 4)
{
<td>
<table>
<tr>
<td>
@Html.RadioButton("RadTF", UniqueValue
, false, new { id = "RadTF", @style = "width:auto;background:none;border:none" })
@property.GetValue(itemInner, null)
</td>
</tr>
</table>
</td>
}
else if (@item.ObjQuestions.QuestionType == 1)
{
<td>
<table>
<tr>
<td>
@Html.CheckBox("Chk"+@item.QuestionCode.ToString()+UniqueValue
, false, new { id = "Chk"+@item.QuestionCode.ToString()+UniqueValue
, @style = "width:auto;background:none;border:none" })
@property.GetValue(itemInner, null)
</td>
</tr>
</table>
</td>
}
}
}
编辑1: UniqueValue 是我的forloop变量。为了给每个按钮一个唯一的值。我也尝试将这个唯一的变量连接到我的id上:
@Html.RadioButton("RadTF"+UniqueValue, UniqueValue
, false, new { id = "RadTF"+UniqueValue
, @style = "width:auto;background:none;border:none" })
值是常数 意味着,如果我生成具有相同值的单选按钮,我会在帖子中看到它们(或者更确切地说是其中之一)。
答案 0 :(得分:1)
对于您的单选按钮组,您必须确保每个单选按钮:
id
name
name
属性将不同的单选按钮组合在一起。你正在使用这个重载:
public IHtmlString RadioButton(
string name,
Object value,
bool isChecked,
Object htmlAttributes
)
你可以尝试这个来创建单选按钮:
@Html.RadioButton("RadTF", UniqueProperty, false, new { id = "RadTF"+UniqueValue, style = "width:auto;background:none;border:none" })
如果您仍有问题,请发布已呈现表单的标记。