2011-09-03 7 views
1

기본 모의 웹 사이트 (첫 번째)를 작성 중이며 데이터베이스 테이블에서 목록을 채우려고합니다.데이터베이스에서 드롭 다운 채우기

내 컨트롤러에 있습니다.

public void patientInit() 
    { 
     hospitalSQLEntities db = new hospitalSQLEntities(); 
     ViewData["bloodtypeList"] = db.bloodtypes.ToList(); 
     ViewData["doctorno"] = ""; 
     ViewData["wardno"] = ""; 
     ViewData["patientid"] = ""; 
     ViewData["patientname"] = ""; 
     ViewData["address"] = ""; 
     ViewData["gender"] = ""; 
     ViewData["bloodtype"] = 0; 
     ViewData["spam"] = ""; 
     ViewData["organs"] = ""; 
     ViewData["formmessage"] = ""; 
    } 

그리고 내 페이지에 내가 쓴이

<label for="bloodtype">Blood Type:</label> 
       <select name="bloodtype" > 
          <% List<InAmberClad.Models.bloodtype> bloodtypeList = (List<InAmberClad.Models.bloodtype>) ViewData["bloodtypeList"]; 
           foreach (InAmberClad.Models.bloodtype st in bloodtypeList) 
           { 
          %> 
           <option value="<%= st.bloodcode%>" <%if (st.bloodcode==(String) ViewData["bloodtypeList"]) Response.Write("Selected"); %>>"><%Response.Write(st.meaning); %></option> 
          <% } %> 
           <option value="0" <%if ((Int32) ViewData["bloodtype"]==0) Response.Write("Selected"); %>></option> 
       </Select> 

이에 어떤 도움을 크게 나는 시간 동안 갇혀있다 그리고 그것은 매우 실망 점점 주시면 감사하겠습니다!

편집 : 오류 코드는 foreach 루프를 둘러 쌈으로써 "NullReferenceException이 사용자 코드로 처리되지 않았습니다. 개체 참조가 개체의 인스턴스로 설정되지 않았습니다"라고 표시됩니다.

편집 : 여기 내 컨트롤러 코드가 모두 있습니다.

@Html.DropDownListFor(m => m.bloodtype, Model.bloodtypelist) 
bloodtype이 값

bloodtypelist가 컨트롤러에 DB에서 채워 모든 값을 유지하는 List<T>입니다 :보기가 강력하게 형식화 된 경우

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using InAmberClad.Models; 

namespace InAmberClad.Controllers 
{ 
[HandleError] 
public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     return View(); 
    } 

    public ActionResult patiententry() 
    { 
     return View(); 
    } 
    public void patientInit() 
    { 
     hospitalSQLEntities db = new hospitalSQLEntities(); 
     ViewData["bloodtypeList"] = db.bloodtypes.ToList(); 
     ViewData["doctorno"] = ""; 
     ViewData["wardno"] = ""; 
     ViewData["patientid"] = ""; 
     ViewData["patientname"] = ""; 
     ViewData["address"] = ""; 
     ViewData["gender"] = ""; 
     ViewData["bloodtype"] = 0; 
     ViewData["spam"] = ""; 
     ViewData["organs"] = ""; 
     ViewData["formmessage"] = ""; 
    } 

    public void patientNewButtPressed() 
    { 
     if (Request.Params["submitter"] == "New Patient") 
     { 
      ViewData["doctorno"] = ""; 
      ViewData["wardno"] = ""; 
      ViewData["patientid"] = "(System Specified)"; 
      ViewData["patientname"] = ""; 
      ViewData["address"] = ""; 
      ViewData["gender"] = ""; 
      ViewData["bloodtype"] = 0; 
      ViewData["spam"] = ""; 
      ViewData["organs"] = ""; 
      ViewData["formmessage"] = ""; 
     } 
    } 

    public void patientSearchByID() 
    { 
    } 

    public void patientSearchByName() 
    { 
    } 

    public void patientInsert() 
    { 
     hospitalSQLEntities db = new hospitalSQLEntities(); 
     int newid = 0; 
     if (db.patients.Count() == 0) 
      newid = 1; 
     else 
      newid = db.patients.Max(u => u.patientid) + 1; 
     patient newpatient = new patient(); 
     newpatient.patientid = newid; 
     newpatient.doctorno = Request.Params["doctorno"]; 
     newpatient.wardno = Request.Params["wardno"]; 
     newpatient.patientname = Request.Params["patientname"]; 
     newpatient.address = Request.Params["address"]; 
     newpatient.gender = Request.Params["gender"]; 
     newpatient.bloodtype = Request.Params["bloodtype"]; 
     newpatient.spam = Convert.ToInt32(Request.Params["spam"]); 
     newpatient.organs = Convert.ToInt32(Request.Params["organs"]); 
     db.AddTopatients(newpatient); 
     db.SaveChanges(); 
    } 

    public void patientUpdate() 
    { 
    } 

    public ActionResult hospitalSQL() 
    { 
     patientInit(); 
     if (Request.Params["submitter"] == "New Patient") 
      patientNewButtPressed(); 
     else if (Request.Params["submitter"] == "Search") 
     { 
      if (Request.Params["searchpatientid"].Length > 0) 
       patientSearchByID(); 
      else if (Request.Params["searchpatientname"].Length > 0) 
       patientSearchByName(); 
     } 
     else if (Request.Params["submitter"] == "Cancel") 
      patientInit(); 
     else if (Request.Params["submitter"] == "Save") 
     { 
      if (String.Compare(Request.Params["patientid"], "(System Specified)") == 0) 
       patientInsert(); 
      else 
       patientUpdate(); 
     } 
     return View(); 
    } 
} 

} 
+0

정확히 무엇이 문제입니까? 기존의 동작과 원하는 동작의 차이에 대한 설명이나 설명을 제공 할 수 있다면 매우 유용 할 것입니다. – Trott

답변

1

, 당신은 도우미를 사용할 수 있습니다.

편집 :

은 다음을 시도해보십시오

<select name="bloodtype"> 
<% foreach (var st in (List<InAmberClad.Models.bloodtype>)ViewData["bloodtypeList"]) { %> 
    <option value="<%=st.bloodcode%>" <%if (st.bloodcode==(String)ViewData["bloodtypeList"]){%> selected<%}%>><%=stmeaning%></option> 
<% } %> 
    <option value="0" <%if ((Int32)ViewData["bloodtype"]==0){%> selected<%}%>></option> 
</select> 

나는 그것이보기에 빈리스트를 전달하는 것 같은데요.

편집 :

액션에서

, View(); 전에 patientInit();

+0

불행히도 이것은 약하게 입력되어 있으므로 이것이 가능하지 않다고 생각합니다. – Rachel

+0

동일한 오류 메시지가 나에게 준 코드의 비트와 함께 나타납니다. 데이터베이스의 데이터 유형은 객체의 정의와 관련이 있지만 어디에서 잘못 될지 알 수 없기 때문에 내가 아는 것에서 비롯된 문자열과 동일한 역할을하는 nvarchar입니다. – Rachel

+0

ViewInstruction(); 전에 컨트롤러에서 patientInit()을로드하고 있습니까? – jzm

0

당신의 인생은 당신이 강력한 형식의보기를 사용한다면 훨씬 쉽게 될 것입니다 추가, 그러나 당신이 그들없이 드롭 목록을 만들 수 있습니다. Html.DropDownList의 서명을 살펴보십시오.

Html.DropDownList(
    string name, 
    IEnumerable<SelectListItem> selectList, 
    string optionLabel, 
    object htmlAttributes) 
관련 문제