通过屏幕按钮调用DotNet Core

时间:2018-11-14 16:08:37

标签: javascript c# asp.net-mvc .net-core devextreme

在DotNet Core应用程序中,我设置了一个按钮,并为我的OnClick事件放置了一些JavaScript。看起来像这样:

<div>
    @(Html.DevExtreme().Button()
                             .Text("Press me")
                             .Type(ButtonType.Normal)
                             .Width(90)
                             .OnClick("notify")
    )
</div>

<script>
     function notify() {
        console.log("pressed");

       // ModifiedDuration.AdjustmentScreen_Netting.Csharp.RunBatch();
      //  var a = '<%=RunBatch()%>';
    }
</script>

注释掉的行是我试图调用我的目标方法的东西,但是都没有用。我要调用的基础方法是这样:

public void RunBatch()
{
    Console.WriteLine("Re-running batch");
    TestOutput print= new TestOutput ();
    print.TestMethod();
 }

然后,TestMethod的作用是:

public void ProcessAdjustedBatch()
{
    Console.WriteLine("I have been called from the datagrid!!!!");
}

因此,按下按钮后,我希望看到以下日志消息:

  • 按下
  • 重新运行批处理
  • 我是从datagrid叫来的!!!!

但是我所看到的只是Pressed在我的开发日志中。如何实现预期的输出?

1 个答案:

答案 0 :(得分:0)

Console.WriteLine()永远不会在客户端的浏览器中显示,因为它在服务器端运行并在服务器的控制台窗口中打开。如果要在即时输出窗口中查看调试消息,则必须使用Debug.WriteLine()

还要注意,var a = '<%=RunBatch()%>'仅在ASPX页面内执行,不能在使用@{ ... }作为代码段的Razor中执行,并且两个调试方法都是服务器端方法。

如果您想使用console.log()在浏览器的控制台中显示服务器端调试消息,则需要创建一个控制器动作来执行两个具有string返回类型的方法,然后在{{内使用AJAX 1}}函数,将结果输出到notify()部分。

这是一个简单的例子:

控制器操作

success

调试方法

public IActionResult GetMessages()
{
    var messages = new StringBuilder();

    messages.Append(RunBatch());
    messages.Append("\n"); // use newline to separate messages from different methods
    messages.Append(ProcessAdjustedBatch());

    return Json(messages.ToString(), JsonRequestBehavior.AllowGet);
}

查看(脚本标签)

public static string RunBatch()
{
    string batch = "Re-running batch";
    Debug.WriteLine(batch);

    TestOutput print = new TestOutput();
    print.TestMethod();

    return batch;
}

public static string ProcessAdjustedBatch()
{
    return "I have been called from the datagrid!!!!";
}

现在控制台输出应如下所示:

<script>
function notify() {
   console.log("pressed");

   $.ajax({
       type: 'GET',
       url: '@Url.Action("GetMessages", "ControllerName")',
       dataType: 'json',
       success: function (result) {
           console.log(result);
       }
   });
}
</script>

实时示例:.NET Fiddle

相关问题:

Where does Console.WriteLine go in ASP.NET?

Asp.net mvc Console.WriteLine to browser

How to use Console.WriteLine in ASP.Net MVC 3