Asp.net-Mvc-3

CheckBox 的 MV3 重複查詢字元串值(true,false 為布爾值)

  • May 5, 2020

我創建了一個帶有復選框的相當簡單的頁面:

@using (Html.BeginForm("MyController", "MyAction", FormMethod.Get))
{
 @Html.CheckBoxFor(x => x.MyCheckBox)
 <input type="submit" value="Go!" />      
}

該 URL 填充了兩次 MyCheckBox 值!?因此:

MyAction?MyCheckBox=true&MyCheckBox=false

如果復選框為真,它只會複製該值。如果設置為 false,它將僅在查詢字元串中出現一次。

上面的程式碼被簡化了,因為我在表單上有幾個下拉菜單和一個可以正常工作的文本框。我認為我從這個問題中遺漏的程式碼沒有什麼不尋常的地方。

有沒有人遇到過查詢字元串參數重複的類似問題?

此行為是由複選框控制項設計的。如果未選中,標準 HTML 複選框控制項不會傳遞任何值。這是不直覺的。相反,ASP.Net 複選框控制項有 2 個元素,一個可見的標準控制項和一個值為“False”的隱藏控制項。

因此,如果未選中該複選框,則將傳遞一個值:False.

如果選中,將有兩個值,TrueFalse。因此,您需要使用以下程式碼來檢查程式碼的有效性:

bool checkboxChecked = Request.QueryString["MyCheckBox"].Contains("True");

引用自:https://stackoverflow.com/questions/8119569