2014-12-05 1 views
-1

여기Action 메서드의 dropdownlist 매개 변수에서 문자열 값을 가져 오는 대신 인덱스 값을 가져 오는 중, 해결 방법. mvc4에

@model IEnumerable<MvcApplication.Models.Programs> 
@{ 
    ViewBag.Title = "AddProgram"; 
    Layout = "~/Views/Shared/BasicLayout.cshtml"; 
} 
<h2>AddProgram</h2> 
<form method="post"> 
    <table> 
    <tbody> 
     <tr> 
     <td>@Html.Label("DepartmentName", "Department")</td> 
     <td style="height:120px; width:320px"> 
      @Html.DropDownList("DepartName", (SelectList)ViewBag.Dept,"Select Department"); 
     </td> 
     </tr> 
     <tr> 
     <td>@Html.Label("ProgrameLevel", "Program Level")</td> 
     <td> 
      @Html.DropDownList("ProgrameName", (SelectList)ViewBag.DProgram, "---Select Program---"); 
     </td> 
     </tr> 
     <tr> 
     <td>@Html.Label("ProgramName", "Enter Program Name")</td> 
     <td><input id="txt_ProgramName", type="text" name="programname" /></td> 
     </tr> 
    </tbody> 
    </table> 
    <div style="margin-left:80px"> 
    <input type="submit" value="Submit" /> 
    </div> 
</form> 

컨트롤러 내보기

[HttpGet] 
public ActionResult AddProgram() 
{ 
    var dept = (from x in db.Departments select new { Id = x.Id, Name = x.Name }).OrderBy(x => x.Name).ToList(); 
    ViewBag.Dept = new SelectList(dept, "Id", "Name"); 
    List<String> Ptype = new List<string>(); 
    Ptype.Add("BS"); 
    Ptype.Add("MS"); 
    ViewBag.DProgram = new SelectList(Ptype); 
    return PartialView() 
} 

DropDownList로 대신 문자열 값을 가져 오는이 매개 변수 인덱스 값을 반환합니다. 드롭 다운 목록에서 문자열 값 enter code here 만받는 방법은 무엇입니까? 나는 브라우저에서 검색하지만, 그것을 해결하기 위해 답변 해주세요 나는 적절한 대답을 찾을 수 없습니다 ...` [1] : http://i.stack.imgur.com/ZIxy0.png

+0

당신하려면 추가 이제까지 어떤 코드를 컨트롤러 레벨 –

+0

에 ViewBag.Dept로 작성했습니다. 이미지 첨부 됨 .. – user3500386

+0

btween 컨트롤 코드와 뷰 레벨 코드의 관계가 없습니다. 컨트롤러에서 viewBag.Dept를 선언하지 않았지만 드롭 다운에서 ViewBag.Dept..great를 바인딩했습니다. !!!!!! –

답변

0
var deptData= new[] { 
    new SelectListItem { Text = "Dept1", Value = "1" }, 
    new SelectListItem { Text = "Dept2", Value = "2" }, 
    new SelectListItem { Text = "Dept3", Value = "3" } 
    }; 
ViewBag.dept = new SelectList(deptData, "Text", "Text"); 

@Html.DropDownList("DepartName", (SelectList)ViewBag.Dept,"Select Department"); 

구체적인 예를

// Here you only have to get name 
var dept = (from x in db.Departments select new { Name = x.Name }).OrderBy(x => x.Name).ToList(); 
ViewBag.Dept = new SelectList(dept, "Name", "Name"); 
+0

왜'SelectListItem'의 배열을 만들고 나서'new SelectList (..)'를 호출하여 다시 생성하겠습니까? –

+0

SelectList와 SelectListItem은 모두 다른 점입니다. http://msdn.microsoft.com/en-us/library/system.web.mvc.selectlistitem(v=vs.118).aspx http://msdn.microsoft.com/en-us/library/system. web.mvc.selectlist (v = vs.118) .aspx – dotnetstep

+0

알아요,하지만 'SelectListItem' 배열을 참조하고 있습니다! 'SelectList' **는 **'IEnumerable '입니다 (당신의 일은 무의미합니다). 여기에 필요한 것은'List items = new List () { "Dept1", "Dept2", "Dept3"}입니다. ViewBag.dept = new SelectList (items)' –

관련 문제