Конвертировать Json в String Arrays - PullRequest
0 голосов
/ 30 июня 2018

Это мой код для моей формы:

<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, однако мой контроллер - это массив.

Можно ли преобразовать форму в массив?

1 Ответ

0 голосов
/ 30 июня 2018

Я не проверял, как вы отправляете данные. Итак, Я предполагаю, что вы отправляете данные в правильном формате 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.
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...