モデルには、ユーザーが挿入する数量を定義するプロパティがあります。
これを行うには、次のような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>
問題は、テキストボックスに挿入した値がコントローラーに渡されず、他の文字列のみに渡されることです。
ビューの値をオーバーライドできるようにするか、コントローラーのテキストボックスの値を取得できるようにする必要があります。
何か助けはありますか?ありがとうございました。
ビューモデルには、テキストボックスをバインドするための2番目のプロパティが必要です。DefaultModelBinder
だけなので、それは見て、最初に一致した名前/値のペアをバインドLabelsQuantity=Other
要求で、かつセットすることをあなたにLabelsQuantity
proeprty、そして無視しますLabelsQuantity=ValueFormTheTextBox
。
モデルを変更して、追加のプロパティを含めます。
public string OtherQuantity { get; set; }
を使用してビューでバインドします
@Html.TextBoxFor(m => m.OtherQuantity)
また、クライアント側とサーバー側の検証を取得できるように、絶対確実な [RequiredIf("LabelsQuantity", "Other"]
属性などの条件付き検証属性の適用を検討する必要があります。
テキストボックスの値が常に数値である必要がある場合は、int
ではなくプロパティを作成する必要があることにも注意してくださいstring
。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加