【问题标题】:Ajax with ViewComponent带有 ViewComponent 的 Ajax
【发布时间】:2016-04-10 11:59:45
【问题描述】:

如何在 Asp.Net Core 中为 ViewComponent 使用 AJAX?即调用方法@Component.Invoke ("ComponentName", SomeData); ViewComponent 将涉及取决于SomeData 的各种视图,而无需重新启动主视图。

更新

我的解决办法是:

$(function () {
      $(Container).load('ControllerName/ControllerAction', {
                ArgumentName: ArgumentValue });
                                                 });

控制器:

public IActionResult ControllerAction(string value)
        {
           return ViewComponent("ViewComponent", value);
        }

有没有办法在以前的版本中直接使用 ViewComponent 作为 AjaxHelpers?

【问题讨论】:

    标签: asp.net ajax asp.net-core-mvc


    【解决方案1】:

    您的解决方案是正确的。 From the docs:

    [ViewComponents] 不能作为 HTTP 端点直接访问,它们是从您的代码中调用的(通常在视图中)。视图组件从不处理请求。

    虽然视图组件不像控制器那样定义端点,但您可以轻松实现返回 ViewComponentResult 内容的控制器操作。

    正如您所建议的,a lightweight controller 可以充当我们 ViewComponent 的 AJAX 代理。

    public class MyViewComponentController : Controller 
    {
        [HttpGet]
        public IActionResult Get(int id) 
        {
            return ViewComponent("MyViewComponent", new { id });
        }
    }
    

    【讨论】:

    • 您能否详细说明您为什么要这样做?比只返回视图组件的视图有好处吗?
    • “返回视图组件的视图”@MichielCornille 是什么意思?你能举一个例子来说明你如何做到这一点。这将有助于我理解你的问题。
    • MyViewComponent 有一个 Default.cshtml 文件和一个 ViewModel?所以你可以用 return PartialView(...) 返回那些,而不是完全渲染视图组件。
    • 如果这适用于 AJAX 调用,那么在我的脑海中,我看不到一种方法比另一种方法的优势。也就是说,距离我上次查看视图组件 @MichielCornille 已经有几个月了。
    • @Michiel Cornille 你介意举个例子吗?我无法想象任何可以与 AJAX 一起使用的方式,而不是没有 Blazor 互操作
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-09-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-02-02
    • 1970-01-01
    • 2021-06-21
    相关资源
    最近更新 更多