Оповещение о JavaScript в ASP.NET - PullRequest
1 голос
/ 19 апреля 2011

Я хочу использовать Javascript Alert на моей странице ASP.NET.

Например, вот так;

Response.Write("<script language=javascript>alert('ERROR');</script>);

Но это не работает.

Я спрашиваю здесь, что я делаю неправильно, и все предлагают мне использовать RegisterScriptBlock

ScriptManager.RegisterClientScriptBlock(this, this.GetType(), " ", "alert('ERROR')",true);

Но я не хочу использовать его, потому что он работает с PostBack

Как я могу это сделать без PostBack?

РЕДАКТИРОВАТЬ: Например, для использования;

try
{
    string strConnectionString = ConfigurationManager.ConnectionStrings["SqlServerCstr"].ConnectionString;

    SqlConnection myConnection = new SqlConnection(strConnectionString);
    myConnection.Open();

    string hesap = Label1.Text;
    string musteriadi = DropDownList1.SelectedItem.Value;
    string avukat = DropDownList2.SelectedItem.Value;

    SqlCommand cmd = new SqlCommand("INSERT INTO AVUKAT VALUES (@MUSTERI, @AVUKAT, @HESAP)", myConnection);

    cmd.Parameters.AddWithValue("@HESAP", hesap);
    cmd.Parameters.AddWithValue("@MUSTERI", musteriadi);
    cmd.Parameters.AddWithValue("@AVUKAT", avukat);
    cmd.Connection = myConnection;

    SqlDataReader dr = cmd.ExecuteReader(System.Data.CommandBehavior.CloseConnection);
    Response.Redirect(Request.Url.ToString());
    myConnection.Close();
}
catch (Exception)
{
    Response.Write("<h2>ERROR</h2>");
}

Ответы [ 4 ]

3 голосов
/ 19 апреля 2011

См. примечание от MSDN :

Если вы хотите зарегистрировать блок скрипта это не относится к частичной странице обновления, и если вы хотите зарегистрироваться сценарий блокируется только один раз за начальный рендеринг страницы, используйте RegisterClientScriptBlock метод ClientScriptManager класс. Вы можете получить ссылку на ClientScriptManager объект из ClientScript свойство страницы.

Итак, я думаю, ClientScriptManager.RegisterStartupScript метод, который вам нужен:

ClientScriptManager cs = Page.ClientScript;
cs.RegisterClientScriptBlock(
    this.GetType(), 
    " ", 
    @"<script language=javascript>alert('ERROR');</script>", 
    true
);
1 голос
/ 19 апреля 2011

В вашем коде вы забыли кавычку. Я только что попробовал это на примере страницы, как это:

Response.Write("<script language=javascript>alert('ERROR');</script>");

и это сработало. Где вы разместили Response.Write в своем коде? Не могли бы вы дать более подробную информацию? Что ты хочешь делать?

0 голосов
/ 19 апреля 2011

попробуйте использовать RegisterStartupscript для регистрации скрипта.См .: http://msdn.microsoft.com/en-us/library/system.web.ui.page.registerstartupscript.aspx

0 голосов
/ 19 апреля 2011

Для отображения предупреждения пользователю, на веб-странице, у меня есть код, посмотрите на это

public void UserMsgBox(string sMsg)
{
StringBuilder sb = new StringBuilder();
System.Web.UI.Control oFormObject = null;
sMsg = sMsg.Replace("'", "\\'");
sMsg = sMsg.Replace(Strings.Chr(34), "\\" + Strings.Chr(34));
sMsg = sMsg.Replace(Constants.vbCrLf, "\\n");
sMsg = "<script language='javascript'>alert(\"" + sMsg + "\")</script>";
sb = new StringBuilder();
sb.Append(sMsg);
foreach (System.Web.UI.Control oFormObject_loopVariable in this.Controls) {
    oFormObject = oFormObject_loopVariable;
    if (oFormObject is HtmlForm) {
        break; // TODO: might not be correct. Was : Exit For
    }
}
oFormObject.Controls.AddAt(oFormObject.Controls.Count, new LiteralControl(sb.ToString()));
}
...