ASP.net MVC 5下载列表



我是MVC的新手。我使用类库作为Model,它从数据库中读取数据并将其存储在Collection中。以下是从sql数据库中读取记录的类库中的代码:

public IList<SemesterDetails> Read(User user )
{
string code; string name; int credits;int selfStudy;int modHrsPerWeek;
List<SemesterDetails> q = new List<SemesterDetails>();

using (SqlConnection db = new SqlConnection(AppConnect.Connection))
{
string query = "SELECT moduleCode,moduleName,modCredits,modHrsPerWeek,modHrsLeft FROM [Module] WHERE userName=@userName";
try
{
using (SqlCommand command=new SqlCommand(query,db))
{
if (db.State == ConnectionState.Closed)
{
db.Open();
command.Parameters.AddWithValue("@userName",user.UserName);

SqlDataReader reader = command.ExecuteReader();
while (reader.Read())
{
code = reader.GetString(0);
name = reader.GetString(1);
credits = reader.GetInt32(2);
modHrsPerWeek = reader.GetInt32(3);
selfStudy = reader.GetInt32(4);
SemesterDetails semester = new SemesterDetails(code, name, credits,selfStudy);
q.Add(semester);
}

}
}

}
catch (Exception e)
{
Console.WriteLine(e.Message);
}
return q;
}

这被称为控制器的这个动作,如下所示:

public ActionResult EditStudyHrs(User user)
{
List <SemesterDetails >list= dataHandle.Read(user).ToList();
List<string> str = new List<string>();
foreach (var item in list)
{

str.Add(item.ModuleCode);
}
ViewBag.Modules = new SelectList(str, "ModuleCode", "ModuleCode");
return View();
}

我想在这个视图中将Module代码属性绑定到Dropdownlist:

<div class="form-horizontal">
<h4>Details</h4>
<hr />
@Html.DropDownList("Modules","SelctModuleCode")
</div>

学期详情类别:

public  class SemesterDetails : ModuleInfo
{
private int numOfSemWeeks;
public int NumOfSemWeeks
{
get { return numOfSemWeeks; }
set { numOfSemWeeks = value; }
}

private DateTime startdate;
public DateTime StartDate
{
get { return startdate; }
set { startdate = value; }
}
private int studyHrsPerweek;
public int StudyHrsPerweek
{
get { return studyHrsPerweek; }
set { studyHrsPerweek = value; }
}
private DateTime endDate;
public DateTime EndDate
{
get { return endDate; }
set { endDate = value; }
}

private int selfStudy;
public int SelfStudy
{
get { return selfStudy; }
set { selfStudy = value; }
}
public SemesterDetails(string code,string name,int credits,int selfStudy)
{
this.ModuleCode = code;
this.ModuleName = name;
this.ModuleCredits = credits;
this.SelfStudy = selfStudy;


}

试试这个

动作

using Microsoft.AspNetCore.Mvc.Rendering;
.....
public ActionResult EditStudyHrs(User user)
{
var list= dataHandle.Read(user).ToList();
ViewBag.Modules = list.Select(i=> new SelectListItem { Value=i.ModuleCode, Text = i.ModuleName}).ToList();
var model= new SemesterDetails ();
return View(model);
}

查看

@model SemesterDetails 
.....
@Html.DropDownListFor(m => m.ModuleCode,@ViewBag.Modules, "Select Module")

或新语法

<select class="form-control" asp-for="@Model.ModuleCode" asp-items="@ViewBag.Modules"></select>