在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!!!!");
}
因此,按下按钮后,我希望看到以下日志消息:
但是我所看到的只是Pressed
在我的开发日志中。如何实现预期的输出?
答案 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?