내 모델에 다음 코드가 있습니다.
public class ProjectViewModel
{
[Display(Name = "Project Status")]
public int SelectedStatusId { get; set; }
public SelectList StatusList { get; set; }
}
다음은 데이터베이스에서 상태 집합을 검색하는 클래스 (저장소 폴더 내부)입니다.
public IEnumerable<SelectListItem> LoadStatus()
{
using (ProjectEntities proj = new ProjectEntities())
{
var statList = proj.ProjectStatus.Select(x => new SelectListItem
{
Value = x.ProjStatusID.ToString(),
Text = x.ProjStatusCode
});
return new SelectList(statList, "Value", "Text");
}
}
다음은 컨트롤러의 코드입니다.
public class ProjectMasterController : Controller
{
public ActionResult LoadProjectStatus()
{
ProjectDataManager pm = new ProjectDataManager();
var model = new ProjectViewModel();
model.StatusList = new SelectList(pm.LoadStatus(), "ProjStatusID", "ProjStatusCode");
return View(model);
}
}
그리고 마지막으로보기 :
@Html.LabelFor(model => model.SelectedStatusId)
@Html.DropDownListFor(model => model.SelectedStatusId, Model.StatusList,"Select Status")
StackOverflow 에서 answer1 및 answer2 를 참조했습니다 . 하지만 오류가 발생합니다.
'SelectedStatusId'키가있는 ViewData 항목은 'System.Int32'유형이지만 'IEnumerable'유형이어야합니다.
내가 어디로 잘못 가고 있는지 잘 모르겠습니다.
이 라인을보세요.
model.StatusList = new SelectList(pm.LoadStatus(), "ProjStatusID", "ProjStatusCode");
그러나 pm.LoadStatus는 SelectListItem
. 목록의 각 항목이있을 것이다 Value
재산과 Text
재산을하는이되지 않습니다 ProjeStatusID
및 ProjStatusCode
속성을. 그 라인은 충돌 할 것입니다!
이것은 그 문제를 해결할 것입니다.
model.StatusList = new SelectList(pm.LoadStatus(), "Value", "Text");
또는
vm.StatusList = pm.LoadStatus() as SelectList;
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다