我能够为我的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"])%>
答案 0 :(得分:6)
我建议您使用强类型视图(不需要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 --")
%>
答案 1 :(得分:1)
尝试这样的事情:
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"); %>
一些注意事项: