我有一个DataTable,如下所示:
TOTAL_CODE COD_NAME AP0001学校 AP0002医院 AP0003机场 AP0004之家
我是ASP.NET MVC3的新手,我无法弄清楚如何将DataTable绑定到我的DropDownListFor控件。
PS:我的模型如下:
@model Kery.Models.Profile
@{
ViewBag.Title = "DetailAdd";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<P>Please select your sex type: @Html.DropDownListFor(..............)</p>
型号:
public class Profile
{
public IEnumerable<SelectListItem> SexList { get; set; }
}
控制器:
[HttpGet]
public ActionResult DetailAdd()
{
System.Data.DataTable _dtJikchaekList = _bp.DtReturnS(false
, "CHP_AJAX_CODEHELPER"
, "JJ"
, ""
, "0"
);
return View();
}
答案 0 :(得分:2)
这是一种方法。
Edit:
//you can take this as a Sex Model
public class Sex {
public string gender { get; set; }
public string shortname { get; set; }
}
public List<SelectListItem> SexList() {
//if you have your sex model in the database , you can get it here
//I have a static content below, just to show you how you can manuplate the sex model,
List<Sex> s = new List<Sex>() { new Sex() { gender = "Male", shortname = "M" }, new Sex() { gender = "Female", shortname = "F" } };
List<SelectListItem> items = new List<SelectListItem>();
//go through the sex model and populate you selectlist items
foreach (Sex sex in s) {
SelectListItem item = new SelectListItem();
item.Text =sex.gender;
item.Value =sex.shortname;
items.Add(item);
}
return items;
}
在您的控制器上
[HttpGet]
public ActionResult DetailAdd()
{
Profile profile = new Profile();
//set the sex types
profile.SexList=SexList();
return View(profile);
}
你的观点
@model Kery.Models.Profile
@{
ViewBag.Title = "DetailAdd";
Layout = "~/Views/Shared/_Layout.cshtml";
}
<P>Please select your sex type: @Html.DropDownListFor("name",Model.SexList)</p>
答案 1 :(得分:0)
<http://dotnetpools.com/Article/ArticleDetiail/?articleId=48&title=Binding%20Dropdownlist%20In%20MVC3%20Using%20C#t;>
## razor ##
@Html.DropDownList("Country", new SelectList(Model.CountryList, "Value", "Text", Model.CountryList.SelectedValue), new { @id = "ddlist", @data_role = "none", style = "color: #fff; background-color: #fff; font-family: Arial, Helvetica, sans-serif; font-size: 10px; color: #333333; margin-left:3px; width:100%; height:20px;" })
## model ##
public class somename
{
public SelectList CountryList { get; set; }
}
public class Country
{
public string ID { get; set; }
public string Name { get; set; }
}
## Controller ##
public ActionResult index()
{
List<Country> objcountry = new List<Country>();
objcountry = GetCountryList();
SelectList objlistofcountrytobind = new SelectList(objcountry, "ID", "Name", 0);
model.CountryList = objlistofcountrytobind;
return View(model);
}
[HttpPost]
public ActionResult Analyze(AnalyzeModels model)
{
List<Country> objcountry = new List<Country>();
objcountry = GetCountryList();
SelectList objlistofcountrytobind = new SelectList(objcountry, "ID", "Name", 0);
model.CountryList = objlistofcountrytobind;
return View(model);
}
**************************************************
## function for GetCountryList##
public List<Country> GetCountryList()
{
DataTable reportDetailsTable = objCommon.GetDetails("tablename");
List<Country> objcountrty = new List<Country>();
int s = reportDetailsTable.Rows.Count;
for (int i = 0; i < s; i++)
{
string d1 = reportDetailsTable.Rows[i][1].ToString();
string d2 = reportDetailsTable.Rows[i][10].ToString();
objcountrty.Add(new Country { ID = d1, LName = d2 });
}
return objcountrty;
}
答案 2 :(得分:0)
我发现所有其他方法都非常令人困惑,所以我在我看来这样做,似乎工作得很好。零是表的列索引。我正在使用vb.net
<select>
@Code
For Each row In Model.dataTable.Rows
@<option>@row(0)</option>
Next
End Code
</select>