在回发后将选定的下拉列表值传递给控制器

时间:2014-05-28 10:47:00

标签: html5 asp.net-mvc-4 razor-2 pagedlist

如何在回发后将选定的下拉列表值从视图传递给控制器​​。作为我对MVC架构的新手,我们将非常感谢您的帮助。提前致谢。 我需要根据下拉列表的值过滤数据。但是当我移动到pagedlist的下一页时,我的所有下拉列表的值都被设置为默认值。

控制器

    public ActionResult ViewDataOfDatabase(string sortorder, string currentFilter, string searchString, int? page,FormCollection collection) 
     {
         CCIRepository _repository = CCIRepository.CreateRepository();
         AirtelManagementModel _Airtelmodel = new AirtelManagementModel();
         IEnumerable<CityListClass> CityList = _repository.GetCities();
         IEnumerable<SelectListItem> CityNames = from c in CityList
                                                     select new SelectListItem()
                                                     {
                                                         Value = c.CityName.ToString(),
                                                         Text = c.CityName.ToString(),
                                                         Selected = c.CityName == Request["CityNames"],
                                                     };
         ViewBag.CityList = CityNames;
         IEnumerable<clsYearOfDate> SelectList = GetYears();
         //IEnumerable<MonthListClass> SelectMonthList = GetMonths(YearId);
         IEnumerable<SelectListItem> Yearitems = (from v in SelectList
                                             select new SelectListItem()
                                             {
                                                 Value = v.YearSelectedId.ToString(),
                                                 Text = v.YearOfDate.ToString(),
                                                 Selected = v.YearOfDate == Request["Yearitems"],
                                             });

         ViewBag.SelectList = Yearitems;
         int DateId=0;
         string CityName = string.Empty; 
         try 
         { 

                int SelectedYear = Convert.ToInt16(collection["Yearitems"].ToString());
                int SelectedMonth = Convert.ToInt16(collection["MonthItems"].ToString());
                CityName = collection["CityNames"].ToString();
                DateId = _repository.GetImportDateId(SelectedYear, SelectedMonth);
                ViewBag.SelectedYear = SelectedYear;
                ViewBag.SelectedMonth = SelectedMonth;
                ViewBag.SelectedCity = CityName;

         }
         catch(NullReferenceException Ex)
         {
             Console.WriteLine(Ex);
         }
         //IEnumerable<SelectListItem> MonthItems = (from m in SelectMonthList
         //                                          select new SelectListItem()
         //                                          {
         //                                              Value = m.MonthSelectedId.ToString(),
         //                                              Text = m.MonthName,


         //                                          });
         //ViewBag.SelectMonthList = MonthItems;
         IEnumerable<SelectListItem> MonthItems = Enumerable.Empty<SelectListItem>();
         ViewBag.SelectMonthList = MonthItems;
        List<AirtelManagementModel> list = ViewDetails();
        ViewBag.CurrentSort = sortorder;

        ViewBag.PhoneSortParm = String.IsNullOrEmpty(sortorder) ? "Phone_desc" : "";
        if (searchString != null )
        {
            page = 1;
        }
        else
        {

            searchString = currentFilter;
        }
        //if(searchString!=null)
        //{

            ViewBag.CurrentFilter = searchString;
            var airteldetails = from _model in list
                                select _model;
            if(!String.IsNullOrEmpty(searchString) && DateId!=0 && !String.IsNullOrEmpty(CityName))
            {
                airteldetails = _repository.FilterAirtelDetails(searchString, DateId, CityName);
                int PageSize = 5;
                int PageNumber = (page ?? 1);
                return View(airteldetails.ToPagedList(PageNumber, PageSize));
            }
            //airteldetails=airteldetails.OrderByDescending(A=>A.AirtelNumber);
            int pageSize = 5;
            int pageNumber = (page ?? 1); 
            //return View(airteldetails.ToList());
            return View(airteldetails.ToPagedList(pageNumber, pageSize));
      }

查看

   <h2 style="text-align:center">AirtelDetails</h2>
       @using (Html.BeginForm("ViewDataOfDatabase", "AirtelManagement",FormMethod.Post))
{
<h3>Search by PhoneNumber:@Html.TextBox("SearchString",ViewBag.CurrentFilter as string)</h3>

    <p><h3>Year:@Html.DropDownList("Yearitems",(IEnumerable<SelectListItem>)ViewBag.SelectList, "Select Year")</h3>
    <h3>Month:@Html.DropDownList("MonthItems", (IEnumerable<SelectListItem>)ViewBag.SelectMonthList, "Select Month")</h3>
    <h3>City: @Html.DropDownList("CityNames", (IEnumerable<SelectListItem>)ViewBag.CityList, "Select City")</h3></p>
<p><input type="submit" value="Search" /></p>

<script>
    $(document).ready(function () {
        $("#Yearitems").change(function () {
            //debugger;
            //alert($("#Yearitems>option:selected").attr("Value"));
            $.ajax({
                type: "Post",
                url: '@Url.Action("GetMonths","AirtelManagement")',
                data: { YearId: $("#Yearitems>option:selected").attr("Value") },
                datatype: "Json",
                success: function (data) {
                    //debugger;
                    $("#MonthItems").html("");
                    $.each(data, function (index, item) {
                        $("#MonthItems").append(new Option(item.MonthName, item.MonthSelectedId));
                    });
                },
                error: function () {
                    alert("Select Year");
                }
            });
        });
    });
</script>

}
    Page @(Model.PageCount < Model.PageNumber ? 0 : Model.PageNumber) of @Model.PageCount
@Html.PagedListPager(Model, page => Url.Action("ViewDataOfDatabase", "AirtelManagement", new { page, sortOrder = ViewBag.CurrentSort, currentFilter = ViewBag.CurrentFilter }))

0 个答案:

没有答案