2016-10-04 4 views
1

私はいくつかのprojects.UI(ASP.Net mvc)プロジェクト、休憩サービスのプロジェクト、DTOプロジェクト、ビジネスロジックプロジェクトデータアクセス。今度は私のサービスプロジェクトのコントローラーはUI(ASP.Net MVC)プロジェクトのコントローラーと対話し、フォームに入力されたデータを取得してデータベースに送信する必要があります。私はUIプロジェクトのコントローラークラスの中で思いつくべきロジックについてはっきりしていません。 UIプロジェクトsepratleyにはエンティティクラスもあります。ヘルプが必要!Webサービスを介してASP.netのデータベースにデータを送信するMVC

This is the POST method in my services controller 

// POST api/Maintenance 
    [HttpPost] 
    public IHttpActionResult Post([FromBody]Maintenance maintenance) 
    { 
     if (!ModelState.IsValid) 
     { 
      return BadRequest(ModelState); 
     } 
     maintenanceLogic.Insert(maintenance); 

     return CreatedAtRoute("DefaultApi", new { id = maintenance.WorkID }, maintenance); 
    } 

これは上記のメソッドuriにアクセスするメソッドです。このメソッドは、私のUIプロジェクトのコントローラクラスにあります。私は論理を思いついた。しかし、私はそれが正しいとは思わない。

 [HttpPost, Route("/maintenance/CreateMaintenanceOrder")] 
    public PartialViewResult CreateMaintenanceOrder([FromBody] Maintenance Model) 
    { 
     Model.CheckItems = maintenanceViewModel.CheckItems; 
     Model.CrewMembers = maintenanceViewModel.CrewMembers; 
     Model.WorkID = ++SessionUtility.CurrentMaintenanceID; 
     try 
     { 
      var uri = "api/Maintenance/Post "; 

      using (HttpClient httpClient = new HttpClient()) 
      { 
       httpClient.BaseAddress = new Uri("http://localhost:8961"); 
       Task<String> request = httpClient.GetStringAsync(uri); 
       Model = JsonConvert.DeserializeObject<List<Maintenance>>(request.Result); 
      } 
      maintenanceViewModel.MaintenanceOrders.Add(Model); 

     } 
     catch (AggregateException e) 
     { 

     } 

     maintenanceViewModel.MaintenanceOrders.Add(Model); 
     return PartialView("_Search", maintenanceViewModel); 
    } 

答えて

0

あなたはGetAsyncを使用してPOSTメソッドを呼び出すようにしようとしているだけでなく、あなたが入力として残り、サービスメソッドに必要なメンテナンスオブジェクトを渡していないようです。以下試してみてください -

string maintenanceData = JsonConvert.SerializeObject(Model); //considering you have to pass Model as input to Rest method 
HttpResponseMessage response = httpClient.PostAsync(new Uri("http://localhost:8961" + "api/Maintenance/Post/"), new StringContent(maintenanceData)); 
+0

@Rジャイナ教「暗黙的に型system.threading.tasks.task system.netに変換することができないと言ってHttpResponseMessageを使用しているとき、私はエラーを取得します。 httphttpレスポンスメッセージ " –

+0

お詫び申し上げます.HttpResponseMessageを使用する代わりに、元のメッセージのように、タスクリクエストに割り当てることができます –

関連する問題