2017-02-15 86 views
0

我有一個數字輸入,當用戶輸入一個數字時,它將使用Ajax從視圖發送到控制器。一切工作正常,但當用戶輸入十進制數字時,我得到綁定錯誤(1,1或1.2等)。我希望用戶能夠使用十進制數字。如何將十進制值傳遞給使用Ajax的控制器?

這是相關查看代碼:

var postdata = {x: <number input value>}; 
$.ajax({url: url, type: "POST", data: postdata, async: false}) 

這是控制器功能:

[HttpPost] 
public ActionResult MyFunction(decimal x) 
{ 
    return Json(new {success = true, JsonRequestBehavior.AllowGet}); 
} 
+0

嘗試'{x:1.1};' – Mairaj

+0

只是在我的帖子上做了一個小小的編輯。問題是直接從輸入字段中獲取數據:$(「#input」)。val() – Pelle

+2

'parseFloat($(「#input」).val()' – Mairaj

回答

0

你需要字符串化你的數據,當你發送十進制值。

data: JSON.stringify({ x: 5.0 }) 

這是因爲通過默認活頁夾將小數視爲整數。

請對lelow鏈接尋找更多的信息: -

C# MVC Controller cannot get decimal or double values from Ajax POST request

編輯1: -

您也可以嘗試: -

parseFloat(value).toFixed(2) 
+0

我已經嘗試過,同樣的錯誤編輯:toFixed(2)沒有更好的工作。 – Pelle

0

只是發它的價值,並試圖在控制器中轉換

var postdata = {x: $("#input").val()}; 
    $.ajax({url: url, type: "POST", data: postdata, async: false}) 

這是控制器功能:

[HttpPost] 
public ActionResult MyFunction(string x) 
{ 
double z=Convert.ToDouble(x.Trim()); // trim just in case.... 


    return Json(new {success = true, JsonRequestBehavior.AllowGet}); 
} 

在你雙擊的情況下,嘗試這個它應該工作(更換。與,)

double.Parse("52.8725945", System.Globalization.CultureInfo.InvariantCulture); 
+0

我無法使用var作爲參數類型。據我所知,編譯器將無法推斷出類型。至少我得到一個錯誤。 – Pelle

+0

已編輯的文章已將其更改爲字符串 – Dandy

+0

無法使其與字符串類型一起使用。 – Pelle

相關問題