2013-04-25 41 views
1

我將努力讓結果是這樣的:張貼到控制器,並得到結果事件被查

function GetPrice() { 
     var url = '@Url.Action("GetAdditionalPrice")'; 
     $.post(url, { additionalsId: $("input[name=selectedAdditionals]").val }), 
     function(data) { 
      $("#TotalAmount").val(data); 
     }; //View 
    } 

public ActionResult GetAdditionalPrice(string[] additionalsId) 
    { 
     decimal price = 0; 
     foreach (var id in additionalsId) 
     { 
      var aid = int.Parse(id); 
      price += db.ContractAdditionals.Where(ca => ca.ContractAdditionalID == aid).Select(ca => ca.Price).Single(); 
     } 

     return Json(price, JsonRequestBehavior.AllowGet); 
    }//Controller 

爲什麼string[] additionalsId參數總是不確定的?如何將參數發佈到控制器並將結果設置爲#TotalAmount

+2

KS,並在結尾的'()'在'.VAL()' – Drew 2013-04-25 14:29:48

+0

此外,我想這只是一個'string',而不是一個'字符串[]'... – 2013-04-25 14:31:11

+0

omg我忘了!謝謝:D但我仍然無法得到返回Json設置爲#TotalAmount – yovierayz 2013-04-25 14:33:26

回答

0

您錯過了您的.val聲明中的()。這應該是在控制檯拋出一個JS錯誤。

傳回一個數組,你還需要建立一個與你選擇的值

試試這個:

function GetPrice() { 
    var url = '@Url.Action("GetAdditionalPrice")'; 
    var items = new Array(); 
    $.each($("input[name=selectedAdditionals]:checked"), function() { 
     items.push($(this).val()); 
    }); 

    $.post(url, { additionalsId: items }), 
    function(data) { 
     $("#TotalAmount").val(data); 
    }; //View 
} 
+0

好的,謝謝我忘了它,但如果我檢查超過1,參數仍然只有1個字符串[],並且無法返回Json設置爲#TotalAmount @ mattytommo – yovierayz 2013-04-25 14:38:54

+0

@yovierayz檢查我的更新,你需要爲此構建一個數組。 – mattytommo 2013-04-25 14:42:35

+0

正確(「input [name = selectedAdditionals]:checked」)控制器中的參數爲空? @mattytommo – yovierayz 2013-04-25 14:49:32

0

嘗試這個

function GetPrice() { 
    var url = '@Url.Action("GetAdditionalPrice")'; 
    $.post(url, { additionalsId: $("input[name=selectedAdditionals]").val() }), 
    function(data) { 
     $("#TotalAmount").val(data.result); 
    }; //View 
} 

public ActionResult GetAdditionalPrice(string[] additionalsId) 
{ 
    decimal price = 0; 
    foreach (var id in additionalsId) 
    { 
     var aid = int.Parse(id); 
     price += db.ContractAdditionals.Where(ca => ca.ContractAdditionalID == aid).Select(ca => ca.Price).Single(); 
    } 

    return Json(new {result=price}, JsonRequestBehavior.AllowGet); 
}//Controller 
0

其解決

function GetPrice() { 
     var url = '@Url.Action("GetAdditionalPrice")'; 
     var items = new Array(); 
     $("input[name=selectedAdditionals]:checked").each(function() { 
      items.push($(this).val()); 
     }); 
     var postData = { additionalsId: items }; 
     $.ajax({ 
      type: "POST", 
      url: url, 
      data: postData, 
      success: function (data) { 
       $("#TotalAmount").val(data.result); 
      }, 
      dataType: "json", 
      traditional: true 
     }); 
    } 

比你忘了爲幫助:)

+0

感謝@mattytommo :) – yovierayz 2013-04-25 15:50:23