2012-02-02 73 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> 

下拉获取填充,但在选择选择下拉式我只能得到空值.. 请帮助我。我不知道我做错了

在此先感谢

问候, 苏里亚

回答

1

我创建getDept的财产StudentModel和我使用it.Then填充Drodownlist通过使用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() 
      }); 

     } 

    }.... 

并在控制器I包括以下..

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”,“”),“选择任何部门”)它会引发错误.. – 2012-02-02 06:19:15

+0

我得到错误 - 'System.String'不包含名称为'id' 。当我改变它..as @ Html.DropDownListFor(model => model.StudDept,new SelectList(ViewBag.Dept,“id”,“Name”,“”)) – 2012-02-02 08:28:45