Принимая нулевое значение при выборе в DropDownList в MVC 3 - PullRequest
2 голосов
/ 02 февраля 2012

У меня есть контроллер следующим образом ...

       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, но при выборе выпадающего меню я получаю только нулевые значения. Пожалуйста, помогите мне . Я не знаю, что я делаю неправильно

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

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

Ответы [ 2 ]

1 голос
/ 03 февраля 2012

Я создал свойство getDept в StudentModel и заполнил Drodownlist, используя его. Затем, используя Jquery, я передал Value его.Вот код.

  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 голос
/ 02 февраля 2012

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

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

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