如何在ajax GET请求后填充整个表单?

时间:2016-07-25 04:29:43

标签: javascript jquery ajax asp.net-mvc asp.net-mvc-4

我正在处理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;
&#13;
&#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);
    }

1 个答案:

答案 0 :(得分:0)

Apri478 ...您的API为您提供产品的JSon结果,而不是html。 在这一行之上写下console.log(数据) $( “#内容”)的html(数据);

并查看您对API的回复。

如果你将这个json绑定到表单有很多方法..编写自定义js绑定或使用MVVM如angular或knockout。

尝试解释更多,如果这不是你所期望的。