0

クライアントから送信された「データ」を取得するにはどうすればよいですか? (フィールド「データ」内)

<script type="text/javascript">
    $(function () {
        $('#btnAddProductAjax').click(function () {
            var name = $('#txtProductName').val();
            var units = $('#txtUnitsInStock').val();
            var price = $('#txtPrice').val();

            $.ajax({
                url: '@Url.Action("AddProductAjax", "Home")',
                type: 'POST',
                dataType: 'JSON',
                data: {
                    productname: name,
                    unitsinstock: units,
                    price: price
                },
                success: function (data) {                        
                    $('#divResult').html(data);
                    alert('Product added successfully');
                }
            });
        });
    });
</script>

このデータをどのように使用できますか

data: {
    productname: name,
    unitsinstock: units,
    price: price
 },

サーバー側のアクション「AddProductAjax」で?

public JsonResult AddProductAjax(string data)
{
    //retrieve data which is sent from client and do something
    return Json(json_data);
}

私は試した :

  • Request.QueryString[] からデータを取得する
  • AddProductAjax(string name, int units, int price)
  • AddProductAjax(製品製品)

何時間もグーグル検索しても結果なし

UPD:次のようなアクションを定義すると

    AddProductAjax(string productname, int unitsinstock, decimal price) 

- 何も起こりません。Ajax はこのアクションを呼び出しません。私が試したら

    AddProductAjax(string productname, string unitsinstock, string price)

- デバッガーでは、すべてのフィールドが空です!

4

1 に答える 1

0

属性を使用して、アクションが期待する要求のタイプを MVC に指定するのに役立ちます。との両方の属性が にHttpPostあります。HttpGetSystem.Web.Mvc

このような:

[HttpPost]
public JsonResult AddProductAjax(string productname, int unitsinstock, 
                                 decimal price)
{
    //logic...

    return Json(json_data);
}

最初にうまくいかない場合は、次のように、パラメーター (括弧内の変数) をstrings として定義し、それぞれを解析して内部の値を取得する必要がある可能性があります。

[HttpPost]
public JsonResult AddProductAjax(string productname, string unitsinstock, 
                                 string price)
{
    int units = 0;
    int.TryParse(unitsinstock, out units);

    decimal decPrice = 0.00;
    decimal.TryParse(price, out decPrice);

    //logic...

    return Json(json_data);
}
于 2013-10-18T21:27:28.870 に答える