2015-08-28 35 views
0

我在我的視圖中有dropdownlist,並使用控制器的值加載此下拉列表。在更改事件時,我需要將數據傳遞給控制器​​,之後下載列表加載新鮮。但是我希望在發佈到控制器後保留選定的值。我jQuery是以下幾點:在發佈到控制器後保留下拉列表選擇的值

$.ajax({ 
     url: "/TimesheetModels/GetUsersForTimesheet", 
     type: "Get", 
     success: function (data) { 
      for (var i = 0; i < data.length; i++) {     
       opt = new Option(data[i].First_Name, data[i].EmpId); 
       $('#ddlUsers').append(opt); //Load drodown list while page load 
      } 
     } 
    }); 

$('#ddlUsers').change(function() { 
     alert($(this).val()); 
     var empId = $(this).val(); 
     startDate = $('#calendar').fullCalendar('getDate').startOf('week'); 
     window.location.href = "/TimesheetModels/TimesheetApproval?selectDate=" + convertDate(startDate) + "&empId=" + empId; //Pass data to controller 
     alert(empId); // i get this alert before pass to controller 
     $('#ddlUsers').val(empId); 
    }); 

在控制器我有這個aciton,

public ActionResult TimesheetApproval(string SelectDate,string empId) 
     { 
      DateTime startDate; 
      if (!DateTime.TryParse(SelectDate, out startDate)) 
       startDate = DateTime.Today.AddDays(-(int)DateTime.Today.DayOfWeek); 

      int EmpId; 
      if (empId != null) 
       EmpId = Convert.ToInt32(empId); 
      else 
      { 
       EmpId = Convert.ToInt32(Session["EmpId"].ToString()); 
      } 

      string startDateCalendar = Convert.ToString(startDate.ToString("ddd MMM dd yyyy HH:mm:ss")) + " GMT+0530"; 
      ViewData["startDateCalendar"] = startDateCalendar; 

      DateTime endDate = startDate.AddDays(6); 


      List<TimesheetMatrix> _timesheetList = _timesheetDetailViewModel.GetAllProjectTasks(startDate, endDate, EmpId); 


      return View(_timesheetList); 
     } 

誰能幫我解決這個問題?

+0

1.這是'asp.net'嗎? 2.您沒有在控制器上發佈重定向瀏覽器的內容,儘管您的JavaScript在重定位後運行,但整個頁面都被重新請求,所有內容都將丟失。我建議你使用類似於你已經完成的AJAX POST,而不是使用'window.location.href' –

+0

我正在使用MVC並希望將數據傳遞給控制器​​ – KaviSuja

+0

是的,它是MVC,但是MVC是一個概念。 ..你使用asp.net嗎? –

回答

0

你應該做一個AJAX後而改變下拉菜單如下: -

$('#ddlUsers').change(function() { 
     alert($(this).val()); 
     var empId = $(this).val(); 
     startDate = $('#calendar').fullCalendar('getDate').startOf('week'); 

    $.ajax({ 
     url: "/TimesheetModels/TimesheetApproval?selectDate=" + convertDate(startDate) + "&empId=" + empId, 
     type: "Get", 
     success: function (data) { 
      //Any logic 
     } 
    }); 

     alert(empId); // i get this alert before pass to controller 
     $('#ddlUsers').val(empId); 
    }); 

通過這種方式,可以保留下拉。

+0

我試過這個..現在dropdwon的值被設置了。但頁面數據未從控制器操作加載 – KaviSuja

+0

需要在頁面中刷新哪些數據? –

+0

我用控制器中的動作更新了問題。請檢查 – KaviSuja

相關問題