我的模型中有一个属性,用于定义用户要插入的数量。
为此,我使用3个单选按钮,如下所示:
我为此使用的代码如下:
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "100", new { @class = "custom-control-inline radiobtn" }) @Html.Label("100", new { @class = "custom-label-inline " })
</div>
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "1000", new { @class = "custom-control-inline radiobtn" }) @Html.Label("1000", new { @class = "custom-label-inline " })
</div>
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "Other" , new { @class = "custom-control-inline radiobtn" }) @Html.Label("Others", new { @class = "custom-label-inline " })
</div>
<div>
@Html.TextBoxFor(m => m.LabelsQuantity, string.Empty, new { @class = "custom-control-inline form-control enable_tb", type = "number", disabled = "true" })
</div>
问题是我在文本框中插入的值没有传递给控制器,只有 other 字符串传递给了控制器。
我需要能够覆盖视图中的值,或者必须能够在控制器的文本框中获取值。
有帮助吗?谢谢。
答案 0 :(得分:1)
您需要为Others
文本框引入另一个属性,该属性将为其发布值:
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "100", new { @class = "custom-control-inline radiobtn" }) @Html.Label("100", new { @class = "custom-label-inline " })
</div>
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "1000", new { @class = "custom-control-inline radiobtn" }) @Html.Label("1000", new { @class = "custom-label-inline " })
</div>
<div>
@Html.RadioButtonFor(m => m.LabelsQuantity, "Other" , new { @class = "custom-control-inline radiobtn" }) @Html.Label("Others", new { @class = "custom-label-inline " })
</div>
<div>
@Html.TextBoxFor(m => m.Others, string.Empty, new { @class = "custom-control-inline form-control enable_tb", type = "number", disabled = "true" })
</div>
并在模型中:
public class ViewModel
{
public string LabelsQuantity { get; set; }
...............
...............
public string Others { get; set; }
}
现在,在控制器中,您需要检查是否选中了其他单选按钮,使用文本框中提供的选定值。
答案 1 :(得分:1)
您的视图模型需要第二个属性来绑定文本框。 memcpy
仅绑定第一个匹配的名称/值对,因此它将在请求中看到DefaultModelBinder
,并将其设置为您的LabelsQuantity=Other
属性,而忽略LabelsQuantity
。 / p>
更改模型以包含其他属性,例如
LabelsQuantity=ValueFormTheTextBox
并使用
绑定到视图中public string OtherQuantity { get; set; }
您还应该考虑应用条件验证属性,例如foolproof @Html.TextBoxFor(m => m.OtherQuantity)
属性,以便获得客户端和服务器端验证
还请注意,如果文本框的值应始终为数字,则应将属性设为[RequiredIf("LabelsQuantity", "Other"]
而不是int
。