簡體   English   中英

ASP.Net MVC DropdownList和選定的值

[英]ASP.Net MVC DropdownList and selected value

我能夠為我的MVC項目創建一個下拉列表,但是未在下拉列表中將該值選擇為選定值。 它只是從頭開始顯示整個縣列表,值來自數據庫。 我嘗試從以前的帖子中找到它,但這很令人困惑。 請給我建議任何想法。

控制器代碼

public ActionResult Edit(int i)
{
     var items = new SelectList(db.MST_COUNTRies.ToList(), "COUNTRY_ID", "COUNTRY_NM");
     ViewData["MST_COUNTRies"] = items;
}

查看代碼

<%= Html.DropDownList("COUNTRY_ID", (SelectList)ViewData["MST_COUNTRies"])%>

我建議您使用強類型的視圖(不需要ViewData和魔術字符串)。 與往常一樣,首先定義視圖模型類:

public class CountriesViewModel
{
    public int? SelectedCountryId { get; set; }
    public IEnumerable<SelectListItem> Countries { get; set; }
}

然后您的控制器:

public class HomeController : Controller
{
    public ActionResult Index(int? id)
    {
        // TODO: Fetch those from your DB
        var countries = new[] 
        {
            new { Id = 1, Name = "Country 1" },
            new { Id = 2, Name = "Country 2" },
        };

        var model = new CountriesViewModel
        {
            Countries = new SelectList(countries, "Id", "Name", id)
        };

        return View(model);
    }
}

最后是您的強類型視圖:

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<SomeNs.Models.CountriesViewModel>" %>

<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">

    <%= Html.DropDownListFor(
            x => x.SelectedCountryId, 
            Model.Countries, 
            "-- Select Country --") 
    %>

</asp:Content>

現在,當您調用/home/index您沒有選擇任何國家,但是當您將id傳遞給該操作(例如/home/index/2您將獲得具有該ID的國家。

備注:如果您使用的是ASP.NET MVC 1.0,則不會使用強類型的DropDownListFor幫助器,而可以使用以下替代方法:

<%= Html.DropDownList(
        "SelectedCountryId", 
        Model.Countries, 
        "-- Select Country --") 
%>

嘗試這樣的事情:

public ActionResult Edit(int i)
{
     var items = new SelectList(db.MST_COUNTRies.ToList(), "COUNTRY_ID", "COUNTRY_NM", yourSelectedCountryId);
     ViewData["COUNTRY_ID"] = items;
}

然后在您看來:

<%= Html.DropDownList("COUNTRY_ID"); %>

一些注意事項:

  • 新SelectList()中的“ yourSelectedCountryId”參數可用於確定最初應選擇的項目。 假設COUNTRY_ID是一個整數,則此參數也應該是一個整數。
  • 如果使用與DropDownList的名稱/標識匹配的IEnumerable填充ViewData,則Html.DropDownList()調用將自動找到並使用它。 這就是為什么我將ViewData [“ MST_COUNTRies”]更改為ViewData [“ COUNTRY_ID”]。 它節省了一些代碼,我發現自己不得不使用這種方法來解決MVC v1中的錯誤。

暫無
暫無

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

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