2017-09-15 69 views
0

首先,是否可以使用ajax將數據發佈到.netcore 2.0頁面?其次,Razor頁面(.Netcore 2.0)替代了MVC方法嗎?替代方法?在.netcore 2.0中使用Ajax發送數據到Razor頁面

$('#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

或使用適合於Ajax(ISH)一種電話MVC模式和配置中間件讓所有Controller結果在「Pages」文件夾中查看,而不是在「Views」文件夾中查看,以便將所有.cshtml保留在一起。

或使用其他Javascript框架來處理更復雜的頁面。

其次,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()和你的鏈接將像索引/?處理程序= ajax