JavaScript c# 中的代码隐藏
JavaScript code behind in c#
我的 cs 文件中有以下代码。
private bool ValidateFirst()
{
StringBuilder sb2 = new StringBuilder();
sb2.Append(@"<script language='javascript'> var bContinue = true;");
sb2.Append(@"bContinue = confirm(");
sb2.Append("'some text here'");
sb2.Append(@");");
sb2.Append("if (bContinue) {");
sb2.Append(this.Page.ClientScript.GetPostBackEventReference(this, "OKFinal"));
sb2.Append("}</script>");
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "ConfirmDialog", sb2.ToString());
return false;
}
所以我在这里想要的是在页面上显示一个确认弹出窗口。当我在 JSFiddle http://jsfiddle.net/2rbcsvh6/ 上测试它时 sb2.ToString()
正在工作(_doPostBack 事件将不起作用)但在我的应用程序上,它不会显示。代码在屏幕控制器操作命令中。
protected void screenController_ActionCommand(object sender, Web.Controls.CancelCommandEventArgs e)
{
if (e.CommandName == ScreenController.OkCommand)
{
// this is the method that contains the script
if (ValidateFirst)
{
this.Save();
}
}
}
问题是在您嵌入 JS 时页面已经加载并呈现。您需要在页面加载之前 运行 您的代码,即 Page_Load
或者将您的 JS 包装在一个函数中,然后您可以从客户端调用该函数。
我的 cs 文件中有以下代码。
private bool ValidateFirst()
{
StringBuilder sb2 = new StringBuilder();
sb2.Append(@"<script language='javascript'> var bContinue = true;");
sb2.Append(@"bContinue = confirm(");
sb2.Append("'some text here'");
sb2.Append(@");");
sb2.Append("if (bContinue) {");
sb2.Append(this.Page.ClientScript.GetPostBackEventReference(this, "OKFinal"));
sb2.Append("}</script>");
this.Page.ClientScript.RegisterStartupScript(this.Page.GetType(), "ConfirmDialog", sb2.ToString());
return false;
}
所以我在这里想要的是在页面上显示一个确认弹出窗口。当我在 JSFiddle http://jsfiddle.net/2rbcsvh6/ 上测试它时 sb2.ToString()
正在工作(_doPostBack 事件将不起作用)但在我的应用程序上,它不会显示。代码在屏幕控制器操作命令中。
protected void screenController_ActionCommand(object sender, Web.Controls.CancelCommandEventArgs e)
{
if (e.CommandName == ScreenController.OkCommand)
{
// this is the method that contains the script
if (ValidateFirst)
{
this.Save();
}
}
}
问题是在您嵌入 JS 时页面已经加载并呈现。您需要在页面加载之前 运行 您的代码,即 Page_Load
或者将您的 JS 包装在一个函数中,然后您可以从客户端调用该函数。