2017-09-15 10 views
0

まず、ajaxを使用して.netcore 2.0ページにデータを投稿することは可能ですか?.netcore 2.0のAjax to Razorページを使用したデータの投稿

第2に、Razorページ(.Netcore 2.0)はMVCのアプローチに代わるのですか?代わりのアプローチ?

$('#sum').click(function() { 
    $.ajax({ 
     type: 'POST', 

     url: '/Manifest/Sum/3/5', 
     success: function (result) { 
      alert("Succes y'all"); 
     } 
    }); 
}); 

public class IndexModel : PageModel 
{ 
    private readonly CloudSolution.Models.DomainData.ManifestContext _context; 

    public IndexModel(CloudSolution.Models.DomainData.ManifestContext context) 
    { 
     _context = context; 
    } 

    public IList<ManifestViewModel> ManifestViewModel { get;set; } 
    public IActionResult HelloAjax() 
    { 
     return Content("Hello from the controller!", "text/plain"); 
    } 

    [HttpPost, Route("/Manifest/Sum/{firstNumber}/{secondNumber}")] 
    public IActionResult Sum(int firstNumber, int secondNumber) 
    { 
     return Content((firstNumber + secondNumber).ToString(), "text/plain"); 
    } 
    public async Task OnGetAsync() 
    { 
     ManifestViewModel = await _context.ManifestViewModel.ToListAsync(); 
    } 
} 
+0

何が問題なのですか?私が間違っていれば私を修正してください。.NET Core 2.0はMVC 6 Razorの構文を使用しています...代用品ではありません – 12seconds

+0

MVCコントローラにデータを投稿すると、データはコントローラメソッドに渡されますが、 netcore 2.0カミソリのページは、メソッドが呼び出されない。 – Decoder94

+0

'Route'属性がまだサポートされているかどうかはわかりません。それは[未解決の問題](https://github.com/aspnet/Mvc/issues/6605)のようです。 –

答えて

2

まず、そこに複数のオプションはここにある:あなたのレイザーページで

使用ハンドラは、ドキュメントを参照してください。 https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/?tabs=visual-studio#multiple-handlers-per-page

や通話のアヤックス(ISH)の種類のMVCパターンを使用してミドルウェアを設定しますすべてのコントローラ結果が "Views"フォルダの代わりに "Pages"フォルダを見るようにするため、すべての.cshtmlをまとめて保存することができます。

または、より複雑なページを処理するために別のJavascriptフレームワークを使用します。

第2に、Razor Pages(MVVM)は代用品ではありません。どちらか、または両方を一緒に使用することもできます。

すべて私が は、と題する特別セクション、この記事を見ていた、そのページハンドラは試してみるのが最も面白いと思いますすべてで:「ハンドラを介して複数のGETやPOSTアクションの使用」: https://stackify.com/asp-net-razor-pages-vs-mvc/

+0

ハンドラはフォーム送信ボタンでのみ動作しますか?私が達成しようとしているのは、ページをリフレッシュせずにドロップアンドドロップ機能です。 – Decoder94

+1

ポストの後にクライアント側が正確に何を行動させるかによって、機能をどのように構築できるかによって異なります。私たちがハンドラを使ってどこまで行くことができるかは、私にはまだ分かりません。私が知っていることは、.netは常にHTMLサーバサイドをレンダリングするということです。つまり、クライアントサイドのDOM操作がなければページの更新が行われません。だから、私はあなたがいつもドラッグ・アンド・ドロップ機能を「完了」するための何らかのJavaScriptを必要としていると思います。 –

1

2選択肢。

1)Apiコントローラを追加してみてください。超簡単。 2)ページハンドラの例OnPostAjax()を使用すると、リンクはindex /?handler = ajaxのようになります

関連する問題