2016-07-25 7 views
0

私は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); 
    } 
+1

なぜあなたはajaxでフィールドを作成し、asp.netを使用してページのロード時にすべてのデータをロードしないのですか? – madalinivascu

+0

MVCコントローラのviewModelを塗りつぶしてビューに渡す方が簡単かもしれませんが、パフォーマンスを向上させるだけです。また、私はそれを行う方法を知っているので、フォームをJSONで正しく埋める方法はわかりません。間違っていると私を修正してください。しかし、私はページに生データを渡すほうがdata + htmlより速いと思います。私はこのビジネスにはかなり新しいです。 @mongesh madhavan – Apri478

答えて

0

Apri478 ...あなたのAPIは、あなたの製品のJSon結果をHTMLではなくあなたに提供しています。 この行の上にconsole.log(data)を書きます。 $( "#content").html(data);

と、APIの回答をご覧ください。

このjsonをフォームにバインドすると、たくさんの方法があります。カスタムjsバインディングを作成するか、角度またはノックアウトのようなMVVMを使用します。

これがあなたが期待していたものでない場合は、さらに説明してください。

+0

はい、私はJSONの結果とホットHTMLを取得していることを知っています。私はちょうどjsonの結果とhtmlのフィールドをマップすることができる何らかの組み込みjqueryメカニズムがあると思った。 – Apri478

+0

私は角度がそれをかなり簡単に処理できることを知っています、私はちょうどASP.NET MVCでこのプロジェクトをビルドしたいです。私はかなり新しいです、これは私の練習プロジェクトです。 @マダリンイビアス – Apri478

関連する問題