Hoo*_*ayo 1 asp.net asp.net-mvc
我能够为我的MVC项目创建一个下拉列表,但该值未在下拉列表中选择为选定值.它只是从第一个显示整个县列表.值来自数据库.我尝试从以前的帖子中找到它,但它很混乱.请建议我任何想法.
控制器代码
public ActionResult Edit(int i)
{
var items = new SelectList(db.MST_COUNTRies.ToList(), "COUNTRY_ID", "COUNTRY_NM");
ViewData["MST_COUNTRies"] = items;
}
Run Code Online (Sandbox Code Playgroud)
查看代码
<%= Html.DropDownList("COUNTRY_ID", (SelectList)ViewData["MST_COUNTRies"])%>
Run Code Online (Sandbox Code Playgroud)
我建议你使用强类型视图(不需要ViewData和魔术字符串).一如既往地定义视图模型类:
public class CountriesViewModel
{
public int? SelectedCountryId { get; set; }
public IEnumerable<SelectListItem> Countries { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
然后你的控制器:
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);
}
}
Run Code Online (Sandbox Code Playgroud)
最后你的强类型视图:
<%@ 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>
Run Code Online (Sandbox Code Playgroud)
现在,当您打电话给/home/index您时,没有选择任何国家/地区,但是当您通过id此操作时,/home/index/2就会获得已选择此ID的国家/地区.
备注:如果您使用的是ASP.NET MVC 1.0,则不会使用强类型的DropDownListFor帮助程序,您可以使用它:
<%= Html.DropDownList(
"SelectedCountryId",
Model.Countries,
"-- Select Country --")
%>
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
9568 次 |
| 最近记录: |