我正在处理ASP.NET MVC项目并且有一个由MVC控制器呈现的空表单。在它被渲染之后,我发出一个AJAX GET请求,并接收JSON数据来填充表单。
当我填充每个单独的字段时,一切正常(请参阅下面的代码),但我感觉有一种更好/更好的方式来如何一次填充整个表单。请帮忙。
在我的$ .get请求中,我尝试了:
$("#content").html(data);
它简单地清空了我的表格(所有字段都消失了)。
然后我尝试了:
$("#content").val(data);
此处,所有字段均为空白。
无论如何,这是我的代码(请参见下文)。
这是我的观点(.cshtml文件):
@model ViewModels.ProductDetailsViewModel
<form asp-controller="ApiProduct" asp-action="Post" id="content">
<div class="form-group">
<label asp-for="Name" class="control-label">Name</label>
<input asp-for="Name" type="text" class="form-control" id="js-name" />
<span asp-validation-for="Name" class="text-danger"></span>
</div>
<div class="form-group">
<label asp-for="Description" class="control-label">Description</label>
<textarea asp-for="Description" rows="5" cols="40" class="form-control" id="js-description"></textarea>
<span asp-validation-for="Description" class="text-danger"></span>
</div>
<div class="form-group">
<input type="submit" value="Save" class="btn btn-default" />
</div>
</form>
@section Scripts {
<script>
var id = @Model.Id;
$.get("/apiproduct/get/?id=" + id, function (data) {
$("#js-name").val(data.name);
$("#js-description").val(data.description);
});
</script>
}
&#13;
这是我的API控制器:
[HttpGet("{id}")]
public IActionResult Get(int id)
{
var product = _repository.GetProductById(id);
return Ok(product);
}
这是我的MVC控制器:
public IActionResult Details(int id)
{
var vm = new ProductDetailsViewModel()
{
Id = id;
};
return View(vm);
}
答案 0 :(得分:0)
Apri478 ...您的API为您提供产品的JSon结果,而不是html。 在这一行之上写下console.log(数据) $( “#内容”)的html(数据);
并查看您对API的回复。
如果你将这个json绑定到表单有很多方法..编写自定义js绑定或使用MVVM如angular或knockout。
尝试解释更多,如果这不是你所期望的。