我正在尝试将此视图中的值发送到给定的API控制器。当我对json数据进行硬编码时它正在工作。当我按下按钮时,我无法发送id和brandname的数据,因为它是在表中。我如何使它工作?请帮助
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Brand.BrandName)
</th>
<th>
@Html.DisplayNameFor(model => model.ProductName)
</th>
<th>
@Html.DisplayNameFor(model => model.Price)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Brand.BrandName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td><input type="button" id="Save" /></td>
</tr>
}
</table>
@section scripts {
<script>
$(document).ready(function () {
$("#Save").click(function () {
var brand = { 'id':1, 'brandname': 'abc' }
$.ajax({
url: 'http://localhost:51429/api/brands',
type: 'POST',
dataType: 'json',
data: brand,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log('Error in Operation');
}
});
});
});
</script>
}
我有一个品牌API。它的后期API控制器是
[HttpPost]
public IHttpActionResult Post([FromBody]Brands brand)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
db.Brands.Add(brand);
db.SaveChanges();
return CreatedAtRoute("DefaultApi", new { id = brand.Id }, brand);
}
答案 0 :(得分:0)
有很多方法可以解决这个问题。一种方法是选择单元格并提取数据以便稍后发送:
$("#Save").click(function () {
var $button = $(this);
var $cells = $button.closest("tr").find("td");
var brand = {..., 'brandname': $cells.eq(0).html(), ...}
...
答案 1 :(得分:0)
您正在使用DisplayFor,它用于显示文本字段的标签或名称。你需要用foreFor替换DisplayFor,在foreach循环中填充数据。 您还应该使用razor HTML帮助表单或AJAX帮助表单
答案 2 :(得分:0)
有不同的方法可以从视图中获取控件值,一个解决方案可以是wrap
<table>...</table>
form
标记,如
<form id="Form1">
<table class="table">
<tr>
<th>
@Html.DisplayNameFor(model => model.Brand.BrandName)
</th>
<th>
@Html.DisplayNameFor(model => model.ProductName)
</th>
<th>
@Html.DisplayNameFor(model => model.Price)
</th>
<th></th>
</tr>
@foreach (var item in Model) {
<tr>
<td>
@Html.DisplayFor(modelItem => item.Brand.BrandName)
</td>
<td>
@Html.DisplayFor(modelItem => item.ProductName)
</td>
<td>
@Html.DisplayFor(modelItem => item.Price)
</td>
<td><input type="button" id="Save" /></td>
</tr>
}
</table>
</form>
访问控制值,如
var brand = $('#Form1').serialize();
$.ajax({
url: 'http://localhost:51429/api/brands',
type: 'POST',
dataType: 'json',
data: brand,
success: function (data, textStatus, xhr) {
console.log(data);
},
error: function (xhr, textStatus, errorThrown) {
console.log('Error in Operation');
}
});