亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

C# ASP.NET:復選框和單選按鈕的問題

C# ASP.NET:復選框和單選按鈕的問題

拉丁的傳說 2023-08-21 16:44:54
我正在創建一個應用程序,用戶填寫一個表單,其中某些屬性的設置不是強制性的。這包括復選框和單選按鈕。所以,我的模型中有這樣的東西:public class MyModel {     public bool boolvalue;     public MyTwoValuedType mytypevalue;}我認為:@model MyModel<form method="post">   @Html.CheckBoxFor(m => m.boolvalue)   @Html.RadioButtonFor(m => m.mytypevalue, mytypevalue.Value1)   @Html.RadioButtonFor(m => m.mytypevalue, mytypevalue.Value2)</form>當我初始化視圖時,我return View();在控制器中發送一個空模型,并且單選按鈕沒有值(未選中單選按鈕)并且未選中復選框(因此其值為 false)。但是,我想使用可空類型,例如 (bool?和MyTwoValuedType?),一旦我希望如果在用戶沒有更改復選框和單選按鈕的值的情況下提交表單(在視圖中),它們就不會沒有得到默認值。即使表單提交有錯誤,表單的重新出現(因為驗證失?。┑膹瓦x框和單選按鈕中的值也不是由用戶設置的……我應該使用Html.DropDownListFor可空類型而不是復選框和單選按鈕嗎?這樣會有好的結果嗎?
查看完整描述

3 回答

?
米琪卡哇伊

TA貢獻1998條經驗 獲得超6個贊

將 @Html.DropDownListFor 用于可為 null 的屬性,因為當您在視圖中發送空模型然后在 POST 中發送時,您將得到 false 作為布爾返回值。您不能將復選框用于布爾模型。

如果你想使用復選框和單選按鈕作為布爾值,那么使用 jquery 來設置值。但 DropdownList 最適合布爾模型屬性。


查看完整回答
反對 回復 2023-08-21
?
慕村225694

TA貢獻1880條經驗 獲得超4個贊

nullable因此,關于在復選框中使用布爾值,它是不合適的,因為nullable布爾值可以存儲 3 種狀態:null、truefalse。但是復選框只能有一個true或一個false其控件。這是因為 aHTML Checkbox沒有 3 態支持,因為當時不存在這個概念。它與舊的 Windows 窗體復選框共享該屬性。所以需要用adropdownlist來處理這三種狀態。如果您想使用復選框,那么:

  • 停止使用nullable布爾值

或者

  • 停止嘗試使用 acheckbox因為這樣null狀態將轉換為false


查看完整回答
反對 回復 2023-08-21
?
LEATH

TA貢獻1936條經驗 獲得超7個贊

你說:“我通過 return View() 發送一個空模型” - 檢查模型是否為空。


控制器:


 public ActionResult Index()

 {

     return View();

 }


 [HttpPost]

 public ActionResult Index(Models.MyModel m)

 {

     return View(m);

 }

看法:


<form method="post">

    @{


        if (Model == null)

        {

            @Html.CheckBoxFor(m => m.boolvalue)


            @Html.RadioButtonFor(m => m.mytypevalue,false);


            @Html.RadioButtonFor(m => m.mytypevalue,false)

        }

        else

        {

            @Html.CheckBoxFor(m => m.boolvalue)


            @Html.RadioButtonFor(m => m.mytypevalue, Model.mytypevalue.Value1);


            @Html.RadioButtonFor(m => m.mytypevalue, Model.mytypevalue.Value2)

        }

    }

</form>

模型:


public class MyModel

{

    public bool boolvalue;

    private MyTwoValuedType _mytypevalue;

    public MyTwoValuedType mytypevalue

    {

        get

        {

            if (_mytypevalue == null)

            {

                _mytypevalue = new MyTwoValuedType();

            }

            return _mytypevalue;

        }

        set

        {

            _mytypevalue = value;

        }

    }

}


查看完整回答
反對 回復 2023-08-21
  • 3 回答
  • 0 關注
  • 183 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號