0

私は現在、非常に奇妙な状況で停止したときに、強く型付けされたビューでチェックボックス リストを作成していました。だから私のモデルビューがあります:

public class QuadroClinicoModelView 
{ 
    public  QuadroClinicoModelView()
    {
        this.check = false;
    }

    public String codigo { set; get; }
    public String nome { set; get; }
    public bool check { set; get; } 
}

私のチェックボックスのリスト:

public List<QuadroClinicoModelView> quadrosClinicos { set; get; }

そして、私の見解では:

<tbody>
    @for (var i = 0; i < Model.quadrosClinicos.Count; i++)
    {
        <tr>
            <td>@Html.CheckBoxFor(x => x.quadrosClinicos[i].check)</td>
            <td>
                @Html.HiddenFor(x => x.quadrosClinicos[i].codigo)
                @Model.quadrosClinicos[i].codigo
            </td>

    .
    .
    .
</tbody>

リストに 2 つ以上のチェックボックスがあるたびに、すべて正常に動作します。しかし、どういうわけか、チェックボックスが2つ以下の場合、フォームを送信するとモデルビューがバインドされません....

同じ name 属性を持つ 2 つの異なる入力 (非表示とチェックボックス) を使用して、Microsoft が行う奇妙な種類のフォーム構成を表示しますが、次のような html ヘルパーを使用してカスタム チェックボックスを作成すると、次のようになります。

public static class CheckBoxHelper
{
    public static MvcHtmlString CustomCheckBoxFor(this HtmlHelper htmlHelper, string name, object htmlAttributes)
    {
        string checkBoxWithHidden = htmlHelper.CheckBox(name, htmlAttributes).ToHtmlString().Trim();
        string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));
        return new MvcHtmlString(pureCheckBox);
    }
    public static MvcHtmlString CustomCheckBoxFor(this HtmlHelper htmlHelper, string name)
    {
        string checkBoxWithHidden = htmlHelper.CheckBox(name).ToHtmlString();
        string pureCheckBox = checkBoxWithHidden.Substring(0, checkBoxWithHidden.IndexOf("<input", 1));
        return new MvcHtmlString(pureCheckBox);
    }
}

リクエストには「true、false」の状況ではなく正しい値がありますが、モデル ビューは空の値を保持します。モデルビューがバインドされていないときにリクエストから値を読み取らないようにしたかったのは、私が覚えている唯一の回避策です。

誰かが私を助けたり、上で説明したような問題を見たりできますか?

4

0 に答える 0