2015-12-19 63 views
-1

從控制器發送List以查看的最佳方式是什麼。順便說一下,我是MVC的新手。 我想發送我的companyList(在崗位控制器)查看。 如果你問爲什麼我想在視圖中顯示companyList [0] .Name,並且我想在我的ajax中的「成功」狀態下執行此操作。發送列表控制器查看

謝謝。

這是我的控制器代碼對於獲取

public ActionResult Index() 
{ 
    KargoDB database = new KargoDB(); 
    var query = database.States.Select(s => new SelectListItem 
    { 
     Value = s.State_id.ToString(), 
     Text = s.Description, 
     Selected = s.State_id.Equals(1) 

    }); 

    var model = new State() 
    { 
     lstStates = query.AsEnumerable() 
    }; 

    return View(model); 
} 

這是我的控制器代碼對於郵政

[HttpPost] 
public ActionResult Index(string senderAddress, string senderState, string receiverAddress, string receiverState, 
    string receiverName, string receiverPhoneNumber, string requestDate, string cargoHeight, string cargoLenght, 
    string cargoQuantity, string paymentType, string cargoWidth, string cargoWeight) 
{ 

    RouteDetailRepository rdr = new RouteDetailRepository(); 
    int routeId = rdr.getRouteId(senderState, receiverState); 
    List<RoutesDetail> companyList = rdr.getRouteDetail(routeId); 
    if (companyList == null) 
    { 
     return JavaScript("Seçilen Güzergaha Sistemde Kayıtlı Olan Hiç Bir Kargo Firması Servis Yapmamaktadır."); 
    } 
    return Json(new { status = "success" }); 
} 

,你可以看到我的成功返回我的AJAX。

這是我查看代碼的一部分

@model denemee.Models.State 
<script type="text/javascript">  
     $(document).on("click", "#btnSearch", function() { 

      var senderAddress = document.getElementById("senderAddress").value; 
      var senderState = document.getElementById("senderState").value; 
      var receiverAddress = document.getElementById("receiverAddress").value; 
      var receiverState = document.getElementById("receiverState").value; 
      var receiverName = document.getElementById("receiverName").value; 
      var receiverPhoneNumber = document.getElementById("receiverPhoneNumber").value; 
      var requestDate = document.getElementById("datepicker").value; 
      var cargoHeight = document.getElementById("cargoHeight").value; 
      var cargoLenght = document.getElementById("cargoLength").value; 
      var cargoQuantity = document.getElementById("cargoQuantity").value; 
      var paymentType = document.getElementById("paymentType").value; 
      var cargoWidth = document.getElementById("cargoWidth").value; 
      var cargoWeight = document.getElementById("cargoWeight").value; 


      if (senderAddress === "" || senderState === "" || receiverAddress === "" || receiverState === "" || 
       receiverName === "" || receiverPhoneNumber === "" || requestDate === "" || cargoHeight === "" || 
       cargoLenght === "" || cargoQuantity === "" || paymentType === "" || cargoWidth === "" || 
       cargoWeight === "") { 
       alert("Lütfen Tüm Alanları Doldurunuz.") 
      } else {  
       $.ajax({ 
        type: 'POST', 
        url: '/Main/Index', 
        dataType: 'json', 
        data: { 
         'senderAddress' : senderAddress, 
         'senderState': senderState, 
         'receiverAddress' : receiverAddress, 
         'receiverState' : receiverState, 
         'receiverName' : receiverName, 
         'receiverPhoneNumber' :receiverPhoneNumber, 
         'requestDate': requestDate, 
         'cargoHeight': cargoHeight, 
         'cargoLenght' : cargoLenght, 
         'cargoQuantity' : cargoQuantity, 
         'paymentType' : paymentType, 
         'cargoWidth' : cargoWidth, 
         'cargoWeight' : cargoWeight, 

        }, 
        success: function (msg) { 

        }, 
        error: function (msg) { 
         alert(msg.responseText); 
        }   
       }); 
      } 
     });  
    </script> 

回答

0

只是使用companyList的價值在你的匿名對象創建一個屬性,像:

[HttpPost] 
public ActionResult Index(string senderAddress, string senderState, string receiverAddress, string receiverState, 
    string receiverName, string receiverPhoneNumber, string requestDate, string cargoHeight, string cargoLenght, 
    string cargoQuantity, string paymentType, string cargoWidth, string cargoWeight) 
{ 

    RouteDetailRepository rdr = new RouteDetailRepository(); 
    int routeId = rdr.getRouteId(senderState, receiverState); 
    List<RoutesDetail> companyList = rdr.getRouteDetail(routeId); 
    if (companyList == null) 
    { 
     return JavaScript("Seçilen Güzergaha Sistemde Kayıtlı Olan Hiç Bir Kargo Firması Servis Yapmamaktadır."); 
    } 
    return Json(new { status = "success", data = companyList }); 
} 

然後在您的JavaScript可以訪問companyList成功回調。來自函數的msg參數是包含狀態和數據屬性的JSON。

$.ajax({ 
    type: 'POST', 
    url: '/Main/Index', 
    dataType: 'json', 
    data: { 
     'senderAddress' : senderAddress, 
     'senderState': senderState, 
     'receiverAddress' : receiverAddress, 
     'receiverState' : receiverState, 
     'receiverName' : receiverName, 
     'receiverPhoneNumber' :receiverPhoneNumber, 
     'requestDate': requestDate, 
     'cargoHeight': cargoHeight, 
     'cargoLenght' : cargoLenght, 
     'cargoQuantity' : cargoQuantity, 
     'paymentType' : paymentType, 
     'cargoWidth' : cargoWidth, 
     'cargoWeight' : cargoWeight, 

    }, 
    success: function (msg) { 
     if(msg.status === "success") { 
      //msg.data is your companyList 
      //do whataver you need 
     } 
    }, 
    error: function (msg) { 
     alert(msg.responseText); 
    }   
}); 

你也可以使用jQuery來得到輸入值,而不是使用document.getElementById

var senderAddress = $("senderAddress").val(); 
var senderState = $("senderState").val(); 
var receiverAddress = $("receiverAddress").val(); 
var receiverState = $("receiverState").val(); 
var receiverName = $("receiverName").val(); 
var receiverPhoneNumber = $("receiverPhoneNumber").val(); 
var requestDate = $("datepicker").val(); 
var cargoHeight = $("cargoHeight").val(); 
var cargoLenght = $("cargoLength").val(); 
var cargoQuantity = $("cargoQuantity").val(); 
var paymentType = $("paymentType").val(); 
var cargoWidth = $("cargoWidth").val(); 
var cargoWeight = $("cargoWeight").val(); 

你也可以使用模型從ASP.NET MVC綁定功能,並創建表示視圖的CLASSE您的頁面,並使用該指數中,而不是行動接收機許多參數的模型,看起來如下:

public class ViewModel 
{ 
    public string SenderAddress { get; set; } 
    public string SenderState { get; set; } 
    public string ReceiverAddress { get; set; } 
    public string ReceiverState { get; set; } 
    public string ReceiverName { get; set; } 
    public string ReceiverPhoneNumber { get; set; } 
    public string RequestDate { get; set; } 
    public string CargoHeight { get; set; } 
    public string CargoLenght { get; set; } 
    public string CargoQuantity { get; set; } 
    public string PaymentType { get; set; } 
    public string CargoWidth { get; set; } 
    public string CargoWeight { get; set; } 
} 

[HttpPost] 
public ActionResult Index(ViewModel viewModel) 
{ 
    RouteDetailRepository rdr = new RouteDetailRepository(); 
    int routeId = rdr.getRouteId(viewModel.SenderState, viewModel.ReceiverState); 
    List<RoutesDetail> companyList = rdr.getRouteDetail(routeId); 
    if (companyList == null) 
    { 
     return JavaScript("Seçilen Güzergaha Sistemde Kayıtlı Olan Hiç Bir Kargo Firması Servis Yapmamaktadır."); 
    } 
    return Json(new { status = "success" }); 
} 

如果你這樣做,你必須在你的java改變字段的名稱腳本代碼,使他們大寫,像:

data: { 
    'SenderAddress' : senderAddress, 
    'SenderState': senderState, 
    'ReceiverAddress' : receiverAddress, 
    'ReceiverState' : receiverState, 
    'ReceiverName' : receiverName, 
    'ReceiverPhoneNumber' :receiverPhoneNumber, 
    'RequestDate': requestDate, 
    'CargoHeight': cargoHeight, 
    'CargoLenght' : cargoLenght, 
    'CargoQuantity' : cargoQuantity, 
    'PaymentType' : paymentType, 
    'CargoWidth' : cargoWidth, 
    'CargoWeight' : cargoWeight  
}, 
+0

謝謝你這麼多@AlbertoMonteiro –

+0

@UfukDoğan任何時候,我高興,這是對你有用:d –

+0

@UfukDoğan我看到你在做一些otimizations你代碼,你想讓我做回答嗎? –