Jquery 如何从C#try catch块触发Boostrap警报

Jquery 如何从C#try catch块触发Boostrap警报,jquery,asp.net-core,bootstrap-4,Jquery,Asp.net Core,Bootstrap 4,我在AspNet Core 3.1中有一个Razor页面,我可以单击该页面上的一个按钮,然后会出现一个引导警报。以下是jquery—它可以正常工作: <script> $(document).ready(function () { $('#btnSubmit').click(showError); $('#linkClose').click(function () { $('#errorAlert').hide('f

我在AspNet Core 3.1中有一个Razor页面,我可以单击该页面上的一个按钮,然后会出现一个引导警报。以下是jquery—它可以正常工作:

 <script>
    $(document).ready(function () {
        $('#btnSubmit').click(showError);

        $('#linkClose').click(function () {
            $('#errorAlert').hide('fade');
        });
    });

    function showError() {
            $('#errorAlert').show('fade');

            setTimeout(function () {
                $('#errorAlert').hide('fade');
            }, 5000);
    }

    if (@Model.ShowError) {
        showError();
    }
</script>
公共异步任务OnGetAsync(bool id) { ROR=id

        try
        {
            var ret = ManipulateMyFile(file)
        }
        catch (Exception ex)
        {
            Log.Error("File being used - {ex}", ex);
            ErrorMessage= "File being used";

            return Redirect("/Admin/LearningTasks/Index/true");
        }
        return Redirect("/Admin/LearningTasks/Index/false");
    }

您可以在ViewBag中设置一个变量,然后在视图中检查它以触发javascript函数。如果您这样做,请确保将其设置为默认值
false
,否则可能导致视图中出现错误

在控制器中

ViewBag.ShowError = false;

try 
{
    var ret = ManipulateMyFile(file)
}
catch (IOException ex)
{
    Log.Error("File being used - {ex}", ex);
    ViewBag.ShowError = true;
}
然后在剃刀的视野里

<script>
    var doShowError = @ViewBag.ShowError.ToString().ToLower();

    $(document).ready(function () {
        $('#btnSubmit').click(showError);

        $('#linkClose').click(function () {
            $('#errorAlert').hide('fade');
        });

        // show the error
        if (doShowError) {
            showError();
        }
    });

</script>

var doShowError=@ViewBag.batherRor.ToString().ToLower();
$(文档).ready(函数(){
$('btnsupmit')。单击(淋浴ROR);
$('#linkClose')。单击(函数(){
$('#errorAlert')。隐藏('fade');
});
//显示错误
如果(doShowError){
淋浴器();
}
});

为什么要从c#代码返回脚本标记?您试图解决的用例是什么?您是通过post还是ajax调用服务器端的?我想从c#代码返回脚本标记,因为我正在记录的错误信息是在服务器端生成的。我想以弹出窗口的形式在客户端显示信息。我正在使用g带有.Net Core 3.1的Razor页面(Razor页面,而不是mvc)。对服务器的调用是通过post进行的,可以在OnPostAsync()下的cshtml.cs页面中找到。我采纳了@chrisbyte的建议,并在原始帖子中编辑了代码片段,以反映我不是在使用mvc模型,而是在使用纯剃须刀页面,但仍然存在问题。此外,我希望摆脱我的方法导致的完整页面刷新。
<script>
    var doShowError = @ViewBag.ShowError.ToString().ToLower();

    $(document).ready(function () {
        $('#btnSubmit').click(showError);

        $('#linkClose').click(function () {
            $('#errorAlert').hide('fade');
        });

        // show the error
        if (doShowError) {
            showError();
        }
    });

</script>