私はASP.NET MVCプロジェクトに取り組んでおり、空のフォームはMVCコントローラによってレンダリングされています。レンダリングされた直後に、私はAJAX GETリクエストを行い、JSONデータを受け取ってフォームに移入します。ajax GETリクエストの後にフォーム全体を取り込む方法は?
個々のフィールドにデータを入力するとすべてが正常に動作します(下のコードを参照してください)が、フォーム全体を一度に読み込む方法がより良い/より軽いと感じています。助けてください。私の$に.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>
}
は私の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);
}
なぜあなたはajaxでフィールドを作成し、asp.netを使用してページのロード時にすべてのデータをロードしないのですか? – madalinivascu
MVCコントローラのviewModelを塗りつぶしてビューに渡す方が簡単かもしれませんが、パフォーマンスを向上させるだけです。また、私はそれを行う方法を知っているので、フォームをJSONで正しく埋める方法はわかりません。間違っていると私を修正してください。しかし、私はページに生データを渡すほうがdata + htmlより速いと思います。私はこのビジネスにはかなり新しいです。 @mongesh madhavan – Apri478