2012-04-11 14 views
1

私はASP.NETとMVCモデルを使い始めました。私は基本的なコンセプトの周りで働いて、いくつかのモデル、コントローラ、およびビューを正常に動作させました。私はWebメソッドとページメソッドをWebサービスに追加する方法を知っていますが、MVCプロジェクトのためにそれを理解することはできません。ASP MVCプロジェクトにページメソッドを追加する正しい方法は?

私は考える(AJAXリクエストに応答する正しい方法としてページメソッドをプロジェクトに追加する必要がある)これは私のコントローラは次のようになります。/Order/Place

namespace MyProject 
{ 
    public class OrderController : Controller 
    { 
     public ActionResult Place (ProductSku sku) 
     {   
      var order = Order.NewOrder(sku); 
      var db = new SystemDiscsLib.Database(); 
      db.SaveOrder(order); 

      return View(order); 
     } 

     [WebMethod] 
     public static string GetDate() 
     { 
      return DateTime.Now.ToString(); 
     } 

投稿は正常に動作、およびビューはViews/Order/Place.aspxの内容を表示作成され、誰もが幸せです。ただし、/Order/GetDateに対して行われた要求は、エラーThe resource cannot be foundで失敗します。 I(だと思う)私が正しくページメソッドはsystem.webの下で、私のWeb.configにこれを追加することで有効になっている:私はビューを望んでいないとして、私は、GetDateというビューを持っていない、私はちょうど戻っされます

<httpModules> 
     <add name="ScriptModule" type="System.Web.Handlers.ScriptModule, System.Web.Extensions, Version=1.0.61025.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35"/> 
    </httpModules> 

をJSONデータ。私はJQueryを使うつもりなので、EnablePageMethodsScripManagerのもの、per this articleを実行しませんでした。

答えて

4

PageMethodsはMVCではなくWebフォーム用です。この方法は、もはや静的であり、そしてあなたが[WebMethod]属性を使用してはならないこと

public JsonResult GetDate() 
{ 
    return Json(DateTime.Now.ToString()); 
} 

注:もっとこのように見えるためにあなたの方法を変更します。

+0

+1これは正しいですが、私はOPがこのメソッドを自分のビューで使用したいと思っていて、jqueryの使用要求を逃していました。 –

+0

それは間違いなく簡単で、間違ったツリーを吠えさせてしまったPageMethodsをまだ読んでいないのであれば、はっきりしていたはずです。ありがとうございました。 –

+0

私はそれがSystem.Web.Mvcにもあると信じていますか? – mgnoonan