【问题标题】:Convert Json to String Arrays将 Json 转换为字符串数组
【发布时间】:2018-06-30 00:25:57
【问题描述】:

这是我的表单代码:

<div class="form-group">
    <label for="text">product name:</label>
    <input id="name" type="text" class="form-control"  placeholder="Enter product name" name="product[0].name">
</div>
<div class="form-group">
    <label for="text">product detail:</label>
    <input id="detail" type="text" class="form-control" placeholder="Enter prodcut detail" name="product[1].detail">
</div>

<button id="btn" type="submit" class="btn btn-default">Submit</button>

这是我的javascript

<script>

    $(function postProduct() {
        $('#btn').click(function () {

            var productName = document.getElementById("name").value;
            var productDetail = document.getElementById("detail").value;

            var dimensions = [ productName, productDetail];
            var keys = $.map(dimensions, function (value, key) {
                return key;
            });

            if (productName == '' || productDetail == '') {
                alert("Please Fill All Fields");
            } else {

                $.ajax({
                    type: 'post',
                    url: "api/product/addproduct",
                    data: keys,
                    dataType: 'json',
                    success: function (result) {

                    },
                    error: function (error) {

                    }
                });
            }

        });
    });

</script>

我的控制器:

[HttpPost]
[Route("api/product/addproduct")]
public IActionResult AddProduct([FromBody] string[] addproduct)
{
    var pProductName= addProduct[0];
    var pProductDetail= addProduct[1];

    Product NewProduct = new Product();
    {
        NewProduct.ProductName= pProductName;
        NewProduct.ProductDetail = pProductDetail;
    }


    _db.Products.Add(NewProduct);
    _db.SaveChanges();

    //create a new route for post method by id
    return CreatedAtRoute(new { id = addproduct}, addproduct);
}

我要做的是在用户将信息输入表单并点击提交按钮之后。信息将被传递给控制器​​并将信息保存到数据库中。我遇到的问题是表单中的数据是 Json 类型,但是,我的控制器是一个数组。

可以把表格转成数组吗?

【问题讨论】:

  • 你在 asp.net 上使用 web api 控制器吗?如果是这样,您可以在您的发布请求中发送一个带有“application/json”标头的 json 数组,它会自行将 json 反序列化为一个数组。
  • @Lucas 是的,我在 asp.net 上使用 web api。你能给我一个这样做的例子吗?谢谢。

标签: c# jquery ajax asp.net-core-mvc


【解决方案1】:

我没有检查您是如何发送数据的。所以我假设您以正确的 JSON 格式发送数据

好消息是:如果您以正确的方式编写代码,ASP.Net Core 会自动为您将 JSON 数据转换为数组!

首先要做的是删除[FromBody] 注释。

现在请使用ViewModel 的方式来接收数据,而不是直接以数组的形式接收数据。即,像这样创建一个视图模型类:

public class MyViewModel
{
    public string[] AddProduct { get; set; } // I find the name weired
}

现在调整控制器中的动作:

public IActionResult AddProduct(MyViewModel viewModel)
{
    // Now check viewModel.AddProduct, you should find the data in the array.
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-27
    • 2013-03-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多