2016-05-19 9 views
0

私は3つのファイルを持っています。ビュー、コントローラー、およびサービスです。私は私のサービスで「UpdatePersoon」というメソッドを持っています。そのメソッドを私のビューでどのように呼び出すのですか?私のボタンはどのようにそのメソッドを呼び出しますか?私のサービスはプロジェクトのWCF側(データベースはデータベース側)にあり、コントローラとビューはWeb側にあります。サービスから自分のメソッドを呼び出すにはどうすればいいですか?

<button type="submit" id="btnSaveChanges" onclick="location.href'@Url.Action("BestuuurEdit", "UpdatePersoon")'" value="Wijzigen" class="btn btn-primary">Wijzigen</button> 

サービス

using System.Collections.Generic; 
using System.Linq; 
using WCFPlanningTool.Models.Bestuur; 
using System.Data.Entity.Migrations; 
using System.Web.ModelBinding; 
using System.Web.Mvc; 

namespace WCFPlanningTool.Services.Bestuur 
{ 
// NOTE: You can use the "Rename" command on the "Refactor" menu to change the class name "BestuurService" in code, svc and config file together. 
// NOTE: In order to launch WCF Test Client for testing this service, please select BestuurService.svc or BestuurService.svc.cs at the Solution Explorer and start debugging. 
public class BestuurService : IBestuurService 
{ 
    public PlanToolEntities db = new PlanToolEntities(); 

    public BestuurModel GetBestuurByOrganisatieId(int organisatieId) 
    { 
     BestuurModel result = null; 


     List<BESTUURSLID> items = db.BESTUURSLID.Include("Persoon").Include("Functie").Where(r => r.ORGANISATIE_ID.Equals(organisatieId)).ToList(); 

     result = new BestuurModel(items); 
     return result; 
    } 

    public bool UpdatePersoon(PersoonModel persoon) 
    { 
     bool result = true; 

     db.Persoon.AddOrUpdate(persoon.GetPoco()); 

     db.SaveChanges(); 
     return result; 



    } 
} 
} 

コントローラ

using OrgPlanTool.BestuurService; 
using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using System.Web.Mvc; 
using OrgPlanTool.Models.Bestuuur; 
using System.Net; 
using System.Data.Entity; 
using System.Data; 
using System.Data.Entity.Migrations; 


namespace OrgPlanTool.Controllers 
{ 
public class BestuuurController : Controller 
{ 
    public ActionResult BestuuurView() 
    { 
     BestuurService.BestuurServiceClient client = new BestuurService.BestuurServiceClient(); 
     BestuurModel2 model = new BestuurModel2(client.GetBestuurByOrganisatieId(17)); 
     return View(model); 
    } 


    [HttpPost] 
    public ActionResult BestuuurEdit() 
    { 
     BestuurService.BestuurServiceClient client = new BestuurService.BestuurServiceClient(); 
     BestuurModel2 model = new BestuurModel2(client.GetBestuurByOrganisatieId(17)); 

     return View(model); 
    } 
} 
} 

それはそれは私の見解だ、BestuuurEditのActionResultを使用する必要があります。

+1

あなたはビュー内のメソッドを呼び出すことはありません。 '[HttpPost]'でマークされたメソッドにフォームを送信し、そのメソッドであなたのサービスの 'UpdatePersoon()'メソッドを呼び出します(そして 'onclick =" location.href .... 'あなたからの送信ボタン。 –

答えて

2

location.href("URI")は、URIで指定されたリソースに対してGET要求を実行します。ここでは、フォームのaction属性を@Url.Action("BestuuurEdit", "Bestuur")に設定します。既定では、formが送信されると、action属性で指定されたURLに対してGET要求が実行されますが、POST要求を行う場合は、フォームのmethod属性を使用して明示的に設定します。あなたのフォームを提出するには、<button type="submit">があれば十分ですが、onclick="location.href"を設定する必要はありません。 BestuurEditアクションから、WCFサービスのクライアントをインスタンス化し、すでに行ったようにメソッドを呼び出すことができます。

<form action="@Url.Action("BestuuurEdit", "Bestuur")" method="POST"> 
    <!-- your input fields--> 
    <button type="submit">Submit</button> 
</form> 
0

あなたは以下のようなメソッドへのAJAX呼び出しを行うことができます。

$.ajax({ 

    url: "[Your method URL]", 
    type: 'POST', 
    data: "Your model in json form", 
    contentType: 'application/json; charset=utf-8', 
    success: function (data) { 


    }, 
    error: function (error) { 

    } 

}); 
関連する問題