Windows 데스크톱 응용 프로그램을 ASP.NET MVC 응용 프로그램으로 이식하고 있습니다. 현재 데이터베이스에 여러 레이스 이벤트를 저장하는 테이블이 있으며 해당 이벤트에 대한 등록자 목록을 표시하고 싶습니다. 데이터베이스에서 특정 이벤트 제목을 하드 코딩하여 모든 등록자를 표시했습니다. 데이터베이스 테이블에서 드롭 다운 목록을로드했습니다. 이제 드롭 다운 목록 선택 항목을 기반으로 등록자를 표시하고 싶지만 where 절이 내용과 일치 할 수 있도록 selectlist를 문자열로 변환하는 방법을 잘 모릅니다.
이것은 컨트롤러입니다
private raceEntities db = new raceEntities();
// GET: Registrants
public ActionResult Index()
{
ViewBag.RaceEvents = new SelectList(db.raceevents, "RaceEventID", "Name");
var registrants = (from per in db.people
join personorgrole in db.personorganizationroles on per.PersonID equals personorgrole.PersonID
join personeve in db.personevents on personorgrole.PersonOrganizationRoleID equals personeve.PersonOrganizationRoleID
join eventcla in db.eventclasses on personeve.RaceEventID equals eventcla.RaceEventID
join personeventcla in db.personeventclasses on eventcla.EventClassID equals personeventcla.EventClassID
join raceeve in db.raceevents on eventcla.RaceEventID equals raceeve.RaceEventID
join organizationrolety in db.organizationroletypes on personorgrole.OrganizationRoleTypeID equals organizationrolety.OrganizationRoleTypeID
//where raceeve.Name == "Ruapehu Gravity Festival" //hardcoded event title
//where raceeve.Name == RaceEvents raceeve.Name matches the selectlist above
select new Registrants { LastName = per.LastName, FirstName = per.FirstName, RoleType = organizationrolety.Name }).Distinct().OrderBy( per => per.LastName);
return View(registrants);
}
이것은보기입니다
@model IEnumerable<IDFWebApp.Models.Custom.Registrants>
@{
ViewBag.Title = "Index";
}
<h2>Index</h2>
@using (Html.BeginForm())
{
@Html.DropDownList("RaceEvents")
<table style="width:100%">
<tr>
<th>First Name</th>
<th>Last Name</th>
<th>Role Type</th>
</tr>
@foreach (var person in Model)
{
<tr>
<td>@person.LastName</td>
<td>@person.FirstName</td>
<td>@person.RoleType</td>
</tr>
}
</table>
}
몇 가지 문제가 있습니다. 첫 번째는 뷰에서 사용하는 모델을 구성하는 방법입니다. 사용자가 컨트롤러로 다시 전달하는 데이터를 보관할 무언가가 필요합니다. RaceEvent
속성을 추가 했습니다. 쿼리 결과를 저장할 속성도 필요합니다. 그것이 Registrants
재산입니다. 나는 추가 된 RegistrantsModel
이름이 변경되는, 그러나 당신이 지금 사용하고있는 모델과 유사.
namespace IDFWebApp.Models.Custom
{
public class RegistrantsModel
{
public string LastName { get; set; }
public string FirstName { get; set; }
public organizationrolety RoleType { get; set; }
}
public class RegistrantsIndexModel
{
public string RaceEvent { get; set; }
public IEnumerable<IDFWebApp.Models.Custom.RegistrantsModel> Registrants { get; set; }
}
}
컨트롤러에 post 메소드도 필요합니다.
// Post: Registrants
[HttpPost]
public ActionResult Index(IDFWebApp.Models.Custom.RegistrantsModel model)
{
model.Registrants = (
from per in db.people
join personorgrole in db.personorganizationroles on per.PersonID equals personorgrole.PersonID
join personeve in db.personevents on personorgrole.PersonOrganizationRoleID equals personeve.PersonOrganizationRoleID
join eventcla in db.eventclasses on personeve.RaceEventID equals eventcla.RaceEventID
join personeventcla in db.personeventclasses on eventcla.EventClassID equals personeventcla.EventClassID
join raceeve in db.raceevents on eventcla.RaceEventID equals raceeve.RaceEventID
join organizationrolety in db.organizationroletypes on personorgrole.OrganizationRoleTypeID equals organizationrolety.OrganizationRoleTypeID
where raceeve.Name == model.RaceEvents
select new Registrants { LastName = per.LastName, FirstName = per.FirstName, RoleType = organizationrolety.Name }).Distinct().OrderBy( per => per.LastName);
return View(model);
}
그게 전부는 아니지만 더 멀리 가야합니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다