如何在javascript中从控制器(MVC)获取布尔值?

Posted

技术标签:

【中文标题】如何在javascript中从控制器(MVC)获取布尔值?【英文标题】:How to obtain the bool from the controller (MVC) in javascript? 【发布时间】:2021-11-03 13:44:00 【问题描述】:

我想根据来自Controller-Action 的返回数据显示一个弹出窗口。为此,我在控制器中创建了一个操作:

public async Task<bool> CheckSurfaceOnDB(#some inputs)
    
        Surface surface = await ratesRepo.FindOneVolMatrix(#some inputs) as Surface;

        return surface != null;
    

然后,在一个 .cshtml 文件中,我有一个脚本,我必须在其中访问 bool 输出,如何做到这一点?

另外,我想知道是否有更好的方法。

谢谢!

【问题讨论】:

这是你想要的吗? (以剃刀的模板语法为条件)docs.microsoft.com/en-us/aspnet/core/mvc/views/… 您的意思是您有一个剃须刀页面并且该应用会发送 http 请求来调用您的操作吗? 【参考方案1】:

您没有提到您是否从 javascript 调用 CheckSurfaceOnDB。根据动作的返回类型,它似乎是一个 ajax 动作。在这种情况下,将操作更改为:

public async Task<IActionResult> CheckSurfaceOnDB(#some inputs)

    Surface surface = await ratesRepo.FindOneVolMatrix(#some inputs) as Surface;
    bool found = (surface != null);

    JsonResult result = this.Json(new  status = found );
    return result;

然后在 javascript (cshtml - Razor 视图) 中获取操作结果:

$.ajax(
    type: 'POST',
    url: '/Controller/CheckSurfaceOnDB',
    data: model,
    dataType: 'JSON',
    async: true,
    cache: false,
    ).done(function (response) 
        if (response != null) 
            if (response.status == true) 
                //Logic for True
                                         
            else 
                //Logic for False
            
         else 
            //Logic for False
        
    ).fail(function () 
    //Logic for False
);

通过这种方式,您可以从操作中发送多个日期,然后在 javascript 中使用。例如,对于 True/False 数据,您还可以从操作中发送用户友好的消息。

注意:如果您的表面对象是一个列表,那么使用Null 值您还应该检查列表是否为空。您可以使用 LINQ 轻松做到这一点。例如:

if(surface != null && surface.Any())

【讨论】:

@vicvid431 希望这能回答你的问题

以上是关于如何在javascript中从控制器(MVC)获取布尔值?的主要内容,如果未能解决你的问题,请参考以下文章

如何在 MVC 应用程序中从 JavaScript 解析相对路径

无法在 ASP.NET MVC 5 中从视图到控制器获取 Select2 标记值

JSTree在MVC4中从视图调用到控制器

如何在非控制器类中从 Microsoft.AspNetCore.Identity 获取 UserID

如何在 ASP.NET MVC 3 的一个解决方案中从另一个项目获取文件路径?

在 asp.net core 5 MVC 视图中从 C# 代码调用 JavaScript 函数