ASP.NETMVC4System.Console.WriteLine("How can I see this debugging information in a browser");
プロジェクトのモデルで記述しました。ブラウザコンソール、または少なくともVisual Studioでこのデバッグ文字列を確認するにはどうすればよいですか?VisualStudioの出力ウィンドウで見つかりません。たぶん、NuGetからプラグインをインストールする必要がありますか?
5 に答える
Console.WriteLine(...)
表示されません。デバッガーで出力を確認する必要がある場合は、次を使用する必要があります
System.Diagnostics.Debug.WriteLine("This will be displayed in output window");
出力ウィンドウで表示します。次の場所に移動すると、出力ウィンドウを開くことができますDebug -> Window -> Output
。
これがすべてどのように見えるかの例を次に示します。
詳細については、このSO投稿を確認してください。
次のクラスを使用して、C#コードからJavascriptコンソールに書き込むことができます
using System.Web;
public static class Javascript
{
static string scriptTag = "<script type=\"\" language=\"\">{0}</script>";
public static void ConsoleLog(string message)
{
string function = "console.log('{0}');";
string log = string.Format(GenerateCodeFromFunction(function), message);
HttpContext.Current.Response.Write(log);
}
public static void Alert(string message)
{
string function = "alert('{0}');";
string log = string.Format(GenerateCodeFromFunction(function), message);
HttpContext.Current.Response.Write(log);
}
static string GenerateCodeFromFunction(string function)
{
return string.Format(scriptTag, function);
}
}
JSバージョンと同じように機能し、実際にメッセージをJSに変換して、ページに挿入します。
を使用できますDebug.Writeline("debug information")
。出力ウィンドウに表示されます。
サムの答えに加えて、あなたはResponse.Write
役に立つかもしれません。状況によっては(たとえば、レガシーインライン.aspxページをサポートしている場合)、疑わしい値をブラウザに書き出すことでデバッグする方が便利です。
String myString = GetAStringFromSomewhere();
/* What did that method actually return, anyway?
NB: Remove this once I know! */
Response.Write(myString);
ただし、これはASP.Net MVCではあまり実用的ではありません。これは、コントローラーがコンパイルされるためです。この場合、log4netのようなものを使用して、デバッグ情報をログファイルに書き出すこともできます。
解決策を提供してくれた+MichaelTaylor3Dに感謝します。私は、ajaxの部分的なポストバック中に機能をサポートするために、さらに少し拡張しました。ScriptManagerをサポートするために、System.Web.Extensionへの参照を追加することを忘れないでください。
public static class Javascript
{
static string scriptTag = "<script type=\"\" language=\"\">{0}</script>";
public static void ConsoleLog(string message)
{
string function = "console.log('{0}');";
string log = string.Format(GenerateCodeFromFunction(function), message);
Page page = HttpContext.Current.Handler as Page;
if (ScriptManager.GetCurrent(page).IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "log", "console.log('" + message + "')", true);
}
else
{
HttpContext.Current.Response.Write(log);
}
}
public static void ConsoleError(string message)
{
string function = "console.error('{0}');";
string log = string.Format(GenerateCodeFromFunction(function), message);
Page page = HttpContext.Current.Handler as Page;
if (ScriptManager.GetCurrent(page).IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "error", "console.error('" + message + "')", true);
}
else
{
HttpContext.Current.Response.Write(log);
}
}
public static void Alert(string message)
{
string function = "alert('{0}');";
string log = string.Format(GenerateCodeFromFunction(function), message);
Page page = HttpContext.Current.Handler as Page;
if (ScriptManager.GetCurrent(page).IsInAsyncPostBack)
{
ScriptManager.RegisterClientScriptBlock(page, page.GetType(), "alert", "alert('" + message + "')", true);
}
else
{
HttpContext.Current.Response.Write(log);
}
}
static string GenerateCodeFromFunction(string function)
{
return string.Format(scriptTag, function);
}
}