【问题标题】:How can I call a controller method in a view using ASP.NET CORE如何使用 ASP.NET CORE 在视图中调用控制器方法
【发布时间】:2021-01-24 17:52:39
【问题描述】:

我有一个控制器,它有一个返回值的方法:

public float GetShoppingCartTotal()
    {
        string user = User.Identity.Name;

        var total = _context.ShutterOrders.Where(c => c.User == user).Select(c => c.Price * c.Amount).Sum();

        return total;
    }

如何从视图中调用此方法,以便显示其价值,这是我的 视图(附注:我取出了视图的一些代码,因为我认为它确实没有必要这个问题。我已经标记了我想调用我的控制器函数的部分):

@model IEnumerable<ShuttersInc.Areas.Identity.Data.ShutterOrders>
<tfoot>
    <tr>
        <td colspan="3" class="text-right">Total:</td>
        <td class="text-right">
         **I'd like to place it here**
        </td>
    </tr>
</tfoot>

P.P.S - 我有一个 IEnumerable 模型,因为我列出了列表中的项目。我认为这是我无法从控制器调用该方法的主要问题之一,尽管我可能弄错了。

【问题讨论】:

  • 一般来说,您通过对相应的 URL 执行 GET 或 POST 来调用视图中的控制器方法。
  • @RobertHarvey 我知道,但我需要来自控制器的方法,它会在视图上返回一个值。
  • 那么你应该在渲染视图之前调用控制器上的方法,并将你感兴趣的值存储到你传递给视图的视图模型中
  • 或使用web socket。这真的有点取决于你想要完成什么
  • 请显示您获得 IEnumerable 的操作

标签: asp.net-mvc asp.net-core model-view-controller


【解决方案1】:

您的错误解决方案必须首先在控制器中使用模型返回视图:

public IActionResult  GetShoppingCartTotal()
    {
        string user = User.Identity.Name;

        var total = _context.ShutterOrders.Where(c => c.User == user).Select(c 
        => c.Price * c.Amount).Sum();

        return View("viewName",total );
    }

然后在视图中:

@model string
<tfoot>
    <tr>
        <td colspan="3" class="text-right">@Model</td>
        <td class="text-right">
         **I'd like to place it here**
        </td>
    </tr>
</tfoot>

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-09-19
    • 2020-01-13
    • 1970-01-01
    • 1970-01-01
    • 2022-01-20
    • 1970-01-01
    • 1970-01-01
    • 2021-09-05
    相关资源
    最近更新 更多