2014-12-10 7 views
1

Я новичок в stackoverflow, так что извините за синтаксис публикации. моя проблема доля не имеет значение вывешена или модель не получает никакого значения здесь моя функция контроллера:Asp.net mvc jquery ajax post возвращает null

[HttpPost] 
public JsonResult SendToStoresPost(tempStoreProduct temp) 
{ 
    ViewBag.returenValue = temp.quantity.ToString(); 
    return Json(ViewBag.returenValue); 
} 

Вот модель:

public class tempStoreProduct 
{ 
    public int productid; 
    public int quantity; 
    public int store;   
} 

Вот JQuery для Ajax поста:

function send(productid) 
{ 
    var quantity = $('#amount-'+productid).val(); 
    var store = $('#stores').val(); 
    var temp = { 
     productid: productid, 
     quantity: quantity, 
     store: store 
    } 
    $.ajax({ 
     url: "SendToStoresPost", //The url where the server req would we made. 
     type: "POST", //The type which you want to use: GET/POST 
     data: temp, 
     dataType: "JSON", //Return data type (what we expect). 
     beforeSend:function(){ 
      $('#ico-'+productid).html('loading'); 
     }, 
     success: function(data) { 
      $('#ico-'+productid).html(data); 
     } 
    }); 
} 

Застрял здесь в течение некоторого времени.

+0

'return Json (ViewBag.returenValue);' Typo! 'returnValue' вместо' returenValue'! –

+0

Да, именно поэтому вы должны держаться подальше от типов ViewBag и 'dynamic' вообще! – DLeh

+0

это не имеет значения. Я dubuged и кажется, что temp в контроллере не получает никакой ценности вообще. – coder

ответ

0

Ваши свойства модели не имеют методы получения и установки (они поля!), Так что свойства не могут быть установлены, когда писал. Изменение модели для

public class tempStoreProduct 
{ 
    public int productid { get; set; } 
    public int quantity { get; set; } 
    public int store { get; set; }  
} 

Кроме того, если у вас действительно есть

var quantity = $('#amount-'+productid).val(); 

означает, что вы имеете контроль с id="amount-1", id="amount-2" и т.д., вам необходимо переосмыслить то, что вы делаете, и научиться строить HTML на основе вашего используя сильно типизированные помощники.

Отметим также, назначая свойство для просмотра сумку в методе POST, а затем к нему доступ снова немного бессмысленно (как звонит .ToString()) - это может быть просто

[HttpPost] 
public JsonResult SendToStoresPost(tempStoreProduct temp) 
{ 
    return Json(temp.quantity); 
} 

хотя я предполагаю, что это не действительный код (зачем передавать значение только серверу, чтобы вернуть точно такое же значение)

+0

да его не настоящий код: D ..... thnx хотя ... это было очень полезно ......... – coder

+0

Есть ли еще проблема? –

+0

ой .... Я только понял, что я должен принять ответ ....извините, приятель ..... thnx за вашу помощь :) – coder

0

Я думаю, что неправильно, это URL-адрес вашего айхакс-звонка. Я хотел бы предложить вам использовать @ Url.Action и поместить его в переменной JavaScript при визуализации представления, как так:

<script type="text/javascript"> 
    var urlSendToStoresPost = '(@Url.Action("SendToStoresPost","ControllerName"))'; 
</script> 

Я не уверен на 100% указанном выше синтаксис.

И позже в вашем АЯКС вызова:

$.ajax({ 
    url: urlSendToStoresPost, //The url where the server req would we made. 
    type: "POST", //The type which you want to use: GET/POST 
    data: temp, 
    dataType: "JSON", //Return data type (what we expect). 
    beforeSend:function(){ 
     $('#ico-'+productid).html('loading'); 
    }, 
    success: function(data) { 
     $('#ico-'+productid).html(data); 
    } 
}); 
+0

url в порядке. Я dubuged и кажется, что temp в контроллере не получает никакой ценности вообще. – coder

0
function send(productid) 
{ 
    var quantity = $('#amount-'+productid).val(); 
    var store = $('#stores').val(); 
    var temp = { 
     productid: productid, 
     quantity: quantity, 
     store: store 
    } 
    $.ajax({ 
     url: "SendToStoresPost", //The url where the server req would we made. 
     type: "POST", //The type which you want to use: GET/POST 
     data: temp, 
     dataType: "JSON", //Return data type (what we expect). 
     contentType: "application/json", 
     beforeSend:function(){ 
      $('#ico-'+productid).html('loading'); 
     }, 
     success: function(data) { 
      $('#ico-'+productid).html(data); 
     } 
    }); 
}