簡體   English   中英

視圖中的ASP.NET MVC綁定值

[英]ASP.NET MVC Binding Value in View

努力從下拉列表中獲取值,然后將其傳遞到我的控制器中以進行數據庫插入。 它從下拉列表中的每個項目的簡單類開始。

 public class selectListUrgencyNum
{
    public string Text { get; set; }
    public string Value { get; set; }
}

然后在我的視圖模型中創建這些對象的列表。

public class createViewModel
{
    public Change Changevm { get; set; }

    public List<RequestType> rTypes { get; set; }

    public List<selectListUrgencyNum> listUrgency { get; set; }
}

最后是我的控制器,我將填充此列表以顯示在下拉列表中。

public ActionResult Create()
    {

        var urgNums = new List<selectListUrgencyNum>();
        for(int i = 1; i < 6; i++)
        {
            urgNums.Add(new selectListUrgencyNum() { Text = i.ToString(), Value = i.ToString() });
        }

        var viewModel = new createViewModel
        {
            listUrgency = urgNums 
        };



        return View(viewModel);
    }

我只是使用1-5來簡化理解。

我的視圖將像這樣創建ddl。

  <div class="form-group">
        @Html.LabelFor(model => model.Changevm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
        <div class="col-md-2">
            <select class="form-control" id="select">
                <option> 1 = Least Urgent</option>
                @foreach(var item in Model.listUrgency)
                {
                    <option>@item.Text</option>
                }
                </select>
             @*How do I grab the value of what is selected??*@
          @Html.ValidationMessageFor(model => model.Changevm.UrgencyNum, "", new { @class = "text-danger" })
         </div>

因此,我不確定如何獲取所選下拉選項的值,以便在我的插入內容中可以訪問它。 可能是隱藏的?

如果我將其用作隱藏物,它將看起來如何?

如果已經回答,請鏈接。

如果只想傳遞文本和值,則可以使用System.Web.Mvc中的SelectListItem類,該類用於將項目傳遞給下拉列表。

public class CreateViewModel
{
    public Change ChangeVm { get; set; }

    public List<RequestType> Types { get; set; }

    public List<SelectListItem> ListUrgency { get; set; }
}

在Controller Create()方法中,我們還創建了新的ChangeVm

var viewModel = new CreateViewModel()
{
    ChangeVm = new Change(),
    ListUrgency = urgNums
};

return View(viewModel);

在視圖上,您​​可以使用Html.DropDownListFor擴展方法,該方法將用於創建具有給定項目和專有名稱的列表。

Html.BeginForm將負責使用適當的“操作” URL和方法來創建表單。

@using (Html.BeginForm("Create", "Home", FormMethod.Post))
{
<div class="form-group">
    @Html.LabelFor(model => model.ChangeVm.UrgencyNum, htmlAttributes: new { @class = "control-label col-md-2" })
    <div class="col-md-2">
        @Html.DropDownListFor(model => model.ChangeVm.UrgencyNum, Model.ListUrgency, "Choose Urgency...")
        @Html.ValidationMessageFor(model => model.ChangeVm.UrgencyNum, "", new { @class = "text-danger" })
    </div>
    <input type="submit" value="Submit"/>
</div>
}

然后,您可以在控制器中使用

    [HttpPost]
    public ActionResult Create(CreateViewModel vModel)
    {
        if(vModel?.ChangeVm?.UrgencyNum != null)
        {
            var chosenValue = vModel.ChangeVm.UrgencyNum;
        }

        return View(vModel);
    }

如果一切順利,則應該在vModel.ChangeVm.UrgencyNum中選擇您的值

name屬性添加到您的select

<select class="form-control" id="select" name="selectedUrgency">

並在控制器的已發布操作中,假設我們具有Create2操作方法。 我們可以從Request對象檢索值。

[HttpPost]
public ActionResult Create2()
{
   var value = Request["selectedUrgency"];
} 

假定您給定的html具有<form>標記,且操作url指向此操作方法。

暫無
暫無

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

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