如果有使用checkboxlist在mono中會發現一是裡面的值無法正常儲存,可參考以下解法:
解法1:
在web.config中的<system.web>區塊中加上此行
<pages controlRenderingCompatibilityVersion="3.5" />
註.但有可能影響到其他有用到4.0以上的元件呈現,例如:MenuItem
解法2:
在Page_PreRender中加上以下函式
protected void Page_PreRender(object sender, EventArgs e)
{
setCheckBoxStates(
[你的checkboxlist名稱]);
}
private void setCheckBoxStates(CheckBoxList cbl)
{
if (IsPostBack)
{
string cblFormID = cbl.ClientID.Replace("_", "$");
int i = 0;
foreach (var item in cbl.Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
((ListItem)item).Selected = true;
i++;
}
}
}
這只能保持你的選取狀態是正常的,但選取的值如果用一般寫法仍會無法儲存,所以同理改寫成以下方式
string calids = "";
string cblFormID =
[你的checkboxlist名稱].ClientID.Replace("_", "$");
int i = 0;
foreach (var item in
[你的checkboxlist名稱].Items)
{
string itemSelected = Request.Form[cblFormID + "$" + i];
if (itemSelected != null && itemSelected != String.Empty)
if (calids == "")
{
calids = itemSelected;
}
else
{
calids += "," + itemSelected;
}
i++;
}
註.checkboxlist的命名規則不可包含有「_」底線,不然會一樣被過濾成$導致無法正常運作