簡體   English   中英

MVC3中的簡單DropDownList

[英]Simple DropDownList in MVC3

在我的第一個MVC3應用程序上工作。 我有一個簡單的視圖,有2個對象(對象A,對象B)。 對象B是可選的。 我已經創建了一個包含兩個對象的模型,並且Controller可以很好地將數據來回傳遞給View。

我正在嘗試為用戶輸入一個簡單的DropDownList來決定是否要為對象B輸入數據。下拉列表很簡單 - 兩個值為“是”和“否”。
例如:繼續使用“B”部分?
[是]
[沒有]

在視圖上,用戶填寫對象A的所有表單項。然后,他們可以選擇填寫對象B的項目。我希望他們選擇“是”如果他們想這樣做(我是使用Jquery來顯示當時的更多頁面)。

我的問題:我如何制作一個簡單的Dropdownlist(甚至是一個基本的HTML輸入類型=“select”...),我可以在提交表單后在Controller中訪問它?

在我的控制器中,我想執行以下操作:
*做對象A的東西
*檢查他們是否選擇了是
*做對象B的東西

像Yes / No下拉這樣簡單的東西需要進入模型嗎? 它沒有輸入任何內容 - 它只是用戶在View中做出的決定。 我知道必須有一個簡單的方法(ViewBag?)但我是新的,顯然已經丟失了。

TL; DR - 如何在我可以在Controller中訪問的視圖上創建簡單的DropdownList?

從HTTPPOST中為您的對象獲取視圖中的值的經驗法則是將輸入控件id和name屬性命名為與Models屬性名稱相同。 一個簡單的方法是使用Html助手。

    public class Model
    {
        public Model()
        {
            List<SelectListItem> options = new List<SelectListItem>();
            options.Add(new SelectListItem { Value = true.ToString(), Text = "yes" });
            options.Add(new SelectListItem { Value = false.ToString(), Text = "no" });
            ContinueOptions = options;
        }
        public bool Continue { get; set; }
        public IEnumerable<SelectListItem> ContinueOptions { get; set; }
    }

在您的視圖中:

@Html.DropDownListFor(m => Model.Continue, Model.ContinueOptions)

在您的控制器中:

[HttpPost]
public ActionResult Edit(Model model)
{
    bool continueOn = model.Continue;   

}

是的,您的下拉菜單應該是模型的一部分,否則控制器將無法得到用戶的答復,以檢查他們是否選擇了是

public SomeViewModel
{
  public ObjectA A { get; set; }
  public ObjectB B { get; set; }
  public bool? IsBSelected { get; set; }
}

我經常使用bool? 只是因為我想知道用戶是選擇了還是另一個,但是使用bool也沒關系。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM