2012-02-02 3 views
2

Я имею контроллер следующим образом ...принимая нулевое значение при выборе в DropDownList в MVC 3

 public ActionResult Create() 
    { 

     ViewBag.Dept = (DbStudent.StudentDetails.Select(s => s.StudDept)).Distinct(); 
     return View(); 
    } 

    // 
    // POST: /Student/Create 

    [HttpPost] 
    public ActionResult Create(StudentDetail studentdetail) 
    { 
     try 
     { 
      // TODO: Add insert logic here I used Stored procedure for it 
      var query = DbStudent.StudInsert(studentdetail.StudName, 
              studentdetail.StudDept, 
          studentdetail.Mark1, studentdetail.Mark2); 

      return RedirectToAction("Index"); 
     } 

В видовом я включил следующую

<div class="editor-field"> 
    @Html.DropDownListFor(model => model.StudDept, new SelectList(ViewBag.Dept as      System.Collections.IEnumerable), 
     "Select Any Department") 
    </div> 

В DropDown получить заселена, но в то время При выборе Dropdown я получаю только нулевые значения. Пожалуйста, помогите мне. Я не знаю, что я делаю неправильно

Заранее спасибо

С уважением, Surya

ответ

1

Я создал свойство getDept в StudentModel и я заселил Drodownlist с помощью it.Then с помощью Jquery я передал значение его. Вот код.

public partial class StudentDetail 
{ 
    private string _StudName; 
    private string _StudDept; 
    private System.Nullable<int> _Mark1; 
    private System.Nullable<int> _Mark2; 
    private int _StudID; 
    public StudentDetail() 
    { 
    } 
    public IEnumerable<SelectListItem> getDept 
    { 
     get 
     { 
      StudentClassesDataContext objStud = new StudentClassesDataContext(); 
      var Dept = objStud.StudentDetails.Select(x => x.StudDept).Distinct(); 
      var deptlist = Dept.AsEnumerable(); 

      return deptlist.Select(x => new SelectListItem 
      { 
       Value = x.ToString(), 
       Text = x.ToString() 
      }); 

     } 

    }.... 

И В контроллере я включил следующие действия ..

public ActionResult studentName(string Dept) 
    { 
     var result = from s in DbStudent.StudentDetails where s.StudDept == Dept           orderby s.StudName select s.StudName; 
     var Studname = result.AsEnumerable().Select(x => new { value = x.ToString(), text = x.ToString() }); 
     return Json(Studname,JsonRequestBehavior.AllowGet); 
    } 

и в свете ..

<div> 
    Search for Another Student<br /> 
    Department 
    @Html.DropDownListFor(x => x.StudDept,new SelectList(Model.getDept, "Value",  "Text"),"--Select Any Dept --") 
    Student Name 
    @Html.DropDownListFor(x => x.StudName, Enumerable.Empty<SelectListItem>(), "--Select Any Student--") 

 <script type="text/javascript"> 
$('#StudDept').change(function() { 
    var selectedDept = $(this).val(); 
    if (selectedDept != null && selectedDept != '') { 
     $.getJSON('@Url.Action("studentName")', { Dept: selectedDept }, function (names) { 
      var nameSelect = $('#StudName'); 
      nameSelect.empty(); 
      $.each(names, function (index, name) { 
       nameSelect.append($('<option/>', { 
        value: name.value, 
        text: name.text 
       })); 
      }); 
     }); 
    } 
}); 
    $('#StudName').change(function() { 
    var Dept = $('#StudDept').val(); 
    var Name = $('#StudName').val(); 
    window.location = "/Student/Search/" + Name ; 
    //alert("Selected Name is " + Name + " And Selected Dept is " + Dept); 
}); 
    </script> 

Наконец я получил выбранное значение из меню списка , Надеется, что это будет полезно для других ... Спасибо

1

Предполагая StudDept внешний ключ объекта StudentDetail (так что вы хотите, чтобы установить выбранное значение в StudDeptId). Это должно дать вам раскрывающийся список для коллекции, которую вы определяете, значение, метка и значение по умолчанию пустой строки.

Попробуйте это:

<%= Html.DropDownListFor(model => model.StudDeptId, 
           new SelectList(ViewBag.Dept, 
              "id", 
              "Name", 
              ""))%> 
+0

Спасибо за ваше Немедленное reply..StudDept является Колонна StudentDetails не является внешним ключом, когда я указать @ Html.DropDownListFor (модель => model.StudDept, новый SelectList (ViewBag.Dept, «StudDept», «StudDept», «»), «Выбрать любой раздел»). Он выдает ошибку. –

+0

У меня ошибка. «System.String» не содержит свойства с именем «id» , Хотя я изменил его ..as @ Html.DropDownListFor (model => model.StudDept, новый SelectList (ViewBag.Dept, "id", "Name", "")) –

Смежные вопросы