以下是产品类:
public class Product
{
public int Id { get; set; }
[Required]
public string Name { get; set; }
[Required]
public string Description { get; set; }
[Required]
[Range(1, 1000000)]
public decimal Price { get; set; }
[Required]
public string Category { get; set; }
}
这是我的.cshtml页面:
<div class="alert alert-success">
<span id="responseMessage"></span>
</div>
<div class="form-group">
<label>Name</label>
@Html.TextBoxFor(x => x.Name)
</div>
<div class="form-group">
<label>Price</label>
@Html.TextBoxFor(x => x.Price)
</div>
<div class="form-group">
<label>Category</label>
@Html.TextBoxFor(x => x.Category)
</div>
<div class="form-group">
<label>Description</label>
@Html.TextBoxFor(x => x.Description)
</div>
<button id="postButton">Ok</button>
这是我的javascript:
$(document).ready(function () {
$("#postButton").click(function () {
var product = 'product=' +
JSON.stringify({
Name: $('#Name').val(),
Description: $('#Description').val(),
Price: $('#Price').val(),
Category: $('#Category').val()
});
$.ajax({
url: "/api/products/postproduct",
type: "POST",
data: product,
dataType: 'json',
success: function (data, status, xhr) {
$('#responseMessage').html('Insert status: ' +
data.d.status);
},
error: function (xhr, status, error) {
alert('Error occurred: ' + status);
}
});
});
});
这是我的控制器:
public async Task<IHttpActionResult> PostProduct(Product product)
{
if (ModelState.IsValid)
{
await Repository.SaveProductAsync(product);
return Ok();
}
else
{
return BadRequest(ModelState);
}
}
提前谢谢你。 ajax帖子击中控制器(我在那里设置断点),但是当我将鼠标悬停在product参数上时,没有值进入。如果您需要更多信息,请告诉我。
答案 0 :(得分:0)
我认为您的问题是:
您正在将数据传递给您的方法,但该参数尚未属于Product类型。您可能需要将参数类型更改为更通用的class Operand {
private Token token;
Token Token {
get => token;
set => token = (value.Equals(TokenType.IntegerLiteral) || value.Equals(TokenType.Identifier)) ? value : throw new Exception("Token must be IntegerLiteral or Identifier");
}
}
类型。然后你可以把它投射到你想要的object
模型。
一旦数据进入您的控制器,它需要一个强类型对象product
。因此,将参数类型更改为product
可以解析object
的每个子项。
答案 1 :(得分:0)
将控制器中的参数名称更改为此 public async Task PostProduct(产品产品)
或改变jquery 数据:{“产品”,产品}
希望这会奏效。