Это мой код для моей формы:
<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, однако мой контроллер - это массив.
Можно ли преобразовать форму в массив?