簡體   English   中英

將JSON對象傳遞給控制器

[英]Passing a JSON object to a controller

我是MVC和JavaScript的新手,雖然這對於我已經苦苦掙扎了一段時間(在看了很多例子之后)的一些人來說可能是一個明顯的答案!

通過Index.cshtml視圖進行調試時,文本框未填充newData對象(在名為AddNewProduct.cshtml的局部視圖中設置)。 通過單擊Index.cshtml中設置的按鈕來顯示部分視圖(這很好用)。 我可以看到由於視圖中的問題,控制器中的newProduct對象尚未填充。

我的主要問題是如何將文本框中的值獲取到newData對象中?

任何建議將不勝感激! 謝謝。

HomeController.cs:

[HttpPost]
        public PartialViewResult RunAddNewProduct(Product newProduct)
        {
                SqlConnection con = new SqlConnection();
                con.ConnectionString = Connections.connection;
                con.Open();

                using (con)
                {
                    SqlCommand cmd = new SqlCommand("INSERT INTO Product VALUES(@Id, @Name, @Description, @Price, @UnitsInStock)", con);

                    cmd.Parameters.Add(new SqlParameter("@Id", newProduct.Id));
                    cmd.Parameters.Add(new SqlParameter("@Name", newProduct.Name));
                    cmd.Parameters.Add(new SqlParameter("@Description", newProduct.Description));
                    cmd.Parameters.Add(new SqlParameter("@Price", newProduct.Price));
                    cmd.Parameters.Add(new SqlParameter("@UnitsInStock", newProduct.UnitsInStock));

                    SqlDataReader rd = cmd.ExecuteReader();

                    while (rd.Read())
                    {
                        newProduct.Id = Convert.ToInt32(rd.GetInt32(0));
                        newProduct.Name = Convert.ToString(rd.GetSqlValue(1));
                        newProduct.Description = Convert.ToString(rd.GetSqlValue(2));
                        newProduct.Price = Convert.ToDecimal(rd.GetDecimal(3));
                        newProduct.UnitsInStock = Convert.ToInt32(rd.GetInt32(4));
                    }
                }
                return PartialView("AddNewProduct", newProduct);           
        } 

Index.cshtml:

$('#btnConfirmNewProduct').live('click', function () {

        var newData = {
                'id': $('#txtId').val(),
                'name': $('#txtName').val(),
                'description': $('#txtDesc').val(),
                'price': $('#txtPrice').val(),
                'unitsInStock': $('#txtUnitsInStock').val()
        };

        $.ajax({
            url: '/Home/RunAddNewProduct',
            data: JSON.stringify(newData),
            type: 'POST',
            dataType: 'json'
        })
            .success(function (result) {
                $('#products').html(result);
            })
            .error(function (xhr, status) {
                alert(status);
            })
    });

AddNewProduct.cshtml:

<table>
        <tr>
            <th>Id</th>
            <th>Name</th>
            <th>Description</th>
            <th>Price</th>
            <th>Units In Stock</th>
        </tr>
        <tr>
            <td><input id="txtAddId" type="text"/></td>
            <td><input id="txtAddName" type="text"/></td>
            <td><input id="txtAddDesc" type="text"/></td>
            <td><input id="txtAddPrice" type="text"/></td>
            <td><input id="txtAddUnitsOfStock" type="text"/></td>
        </tr>
    </table>
    <input id="btnConfirmNewProduct" type="button" value="Confirm New Product" />

更換

data: JSON.stringify(newData),

data: newData,

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM