使用Ajax将数据发布到.netcore 2.0中的Razor页面

时间:2017-09-15 16:01:15

标签: c# asp.net-mvc

首先,是否可以使用ajax将数据发布到.netcore 2.0页面?

其次,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();
    }
}

2 个答案:

答案 0 :(得分:2)

首先,这里有多个选项:

在Razor页面中使用处理程序,请参阅文档: https://docs.microsoft.com/en-us/aspnet/core/mvc/razor-pages/?tabs=visual-studio#multiple-handlers-per-page

或使用MVC模式进行Ajax(ish)类型的调用并配置中间件以使所有Controller结果在“Pages”文件夹而不是“Views”文件夹中查找,这样您就可以将所有.cshtml保存在一起。

或使用其他Javascript框架来处理更复杂的页面。

其次,Razor Pages(MVVM)不是替代品。您可以选择使用其中之一,甚至两者一起使用。

总而言之,我认为页面处理程序是最有趣的尝试, 看一下这篇文章,特别是标题为“通过处理程序使用多个GET或POST操作”的部分: https://stackify.com/asp-net-razor-pages-vs-mvc/

答案 1 :(得分:1)

2个选择。

1)尝试添加Api控制器。超级容易。 2)尝试使用页面处理程序示例OnPostAjax(),你的链接将类似于索引/?handler = ajax