JavaScript:ASP.NET 코드백에서 Alert.Show(메시지)
이 JavaScript를 읽고 있습니다. ASP.NET 코드백에서 Alert.Show(메시지)
저는 같은 것을 구현하려고 노력하고 있습니다.그래서 저는 다음과 같은 정적 클래스를 만들었습니다.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Data;
using System.Data.SqlClient;
using System.Web;
using System.Text;
using System.Web.UI;
namespace Registration.DataAccess
{
public static class Repository
{
/// <summary>
/// Shows a client-side JavaScript alert in the browser.
/// </summary>
/// <param name="message">The message to appear in the alert.</param>
public static void Show(string message)
{
// Cleans the message to allow single quotation marks
string cleanMessage = message.Replace("'", "\'");
string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>";
// Gets the executing web page
Page page = HttpContext.Current.CurrentHandler as Page;
// Checks if the handler is a Page and that the script isn't allready on the Page
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
}
}
}
}
다음 줄에서:
string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>";
오류가 표시됩니다. ; 예상됨
그리고 또
page.ClientScript.RegisterClientScriptBlock(typeof(Alert), "alert", script);
오류: '경고' 형식 또는 네임스페이스 이름을 찾을 수 없습니다. 사용 중인 지침이나 어셈블리 참조가 누락되었습니까?
내가 여기서 뭘 잘못하고 있는 거지?
쉬운 방법은 다음과 같습니다.
Response.Write("<script>alert('Hello');</script>");
string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}
이 메시지는 경고 메시지를 직접 표시합니다.
ScriptManager.RegisterStartupScript(this,GetType(),"showalert","alert('Only alert Message');",true);
이 메시지는 JavaScript 함수의 경고 메시지를 표시합니다.
ScriptManager.RegisterStartupScript(this, GetType(), "displayalertmessage", "Showalert();", true);
경고 메시지를 뒤에 있는 c# 코드로 표시하는 두 가지 방법은 다음과 같습니다.
페이지에서 ScriptManager를 사용하는 경우 다음을 사용할 수도 있습니다.
System.Web.UI.ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "AlertBox", "alert('Your Message');", true);
다음 방법을 사용해 보십시오.
public static void Show(string message)
{
string cleanMessage = message.Replace("'", "\'");
Page page = HttpContext.Current.CurrentHandler as Page;
string script = string.Format("alert('{0}');", cleanMessage);
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, true /* addScriptTags */);
}
}
Vb.Net에서
Public Sub Show(message As String)
Dim cleanMessage As String = message.Replace("'", "\'")
Dim page As Page = HttpContext.Current.CurrentHandler
Dim script As String = String.Format("alert('{0}');", cleanMessage)
If (page IsNot Nothing And Not page.ClientScript.IsClientScriptBlockRegistered("alert")) Then
page.ClientScript.RegisterClientScriptBlock(page.GetType(), "alert", script, True) ' /* addScriptTags */
End If
End Sub
코드가 컴파일되지 않습니다.사용자가 가진 문자열이 예기치 않게 종료됩니다.
string script = "<script type=";
그것은 사실상 당신이 쓴 것입니다.큰따옴표에서 벗어나야 합니다.
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
당신의 소스 코드 색상은 완전히 잭킹되어야 하기 때문에 이런 종류의 것은 고통스러울 정도로 명백해야 합니다.
작동하지 않는 이유는 여러 가지가 있을 수 있습니다.
1: 기능을 제대로 호출하고 있습니까? 즉,
Repository.Show("Your alert message");
2: 스크립트 블록 대신 RegisterStartUpScript 메서드를 사용해 보십시오.
3: UpdatePanel을 사용하는 경우에도 문제가 될 수 있습니다.
ClientScript.RegisterStartupScript(Page.GetType(), "validation", "<script language='javascript'>alert('ID Exists ')</script>");
그리고 제 생각엔, 다음과 같은 대사가 있습니다.
string cleanMessage = message.Replace("'", "\'");
작동하지 않습니다. 다음과 같아야 합니다.
string cleanMessage = message.Replace("'", "\\\'");
당신은 마스크를 해야 합니다.\
와 함께\
그리고'
다른 것과 함께\
.
코드 뒤에서 JavaScript 함수 호출
1단계 Javascript 코드 추가
<script type="text/javascript" language="javascript">
function Func() {
alert("hello!")
}
</script>
2단계 웹 양식에 스크립트 관리자 1개 추가 및 단추 1개 추가
3단계 버튼 클릭 이벤트에 이 코드 추가
ScriptManager.RegisterStartupScript(this.Page, Page.GetType(), "text", "Func()", true);
알림 상자를 빈 페이지에 표시하지 않고 동일한 페이지에 표시하려면 이 작업을 수행합니다.
ScriptManager.RegisterStartupScript(this, GetType(), "showalert", "alert('Sorry there are no attachments');", true);
type="text/syscript" 주위의 따옴표는 당신이 원하기 전에 당신의 문자열을 끝내고 있습니다.이 문제를 방지하려면 안쪽에 작은 따옴표를 사용합니다.
사용
type= '텍스트/스크립트'
이 줄을 수정해야 합니다.
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
그리고 이것도 마찬가지야.
RegisterClientScriptBlock("alert", script); //lose the typeof thing
string script = string.Format("alert('{0}');", cleanMessage);
ScriptManager.RegisterClientScriptBlock(this, this.GetType(), "key_name", script );", true);
100% 문제 없이 작동하며 다른 페이지로 리디렉션되지 않습니다...나는 이것을 복사하고 당신의 메시지를 바꾸려고 노력했습니다.
// Initialize a string and write Your message it will work
string message = "Helloq World";
System.Text.StringBuilder sb = new System.Text.StringBuilder();
sb.Append("alert('");
sb.Append(message);
sb.Append("');");
ClientScript.RegisterOnSubmitStatement(this.GetType(), "alert", sb.ToString());
시도:
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
클라이언트 측 코드를 문자열 매개 변수로 보낸 후 이 메서드를 사용할 수 있습니다.
참고: 이 해결책을 생각해낸 것은 아니지만, 스스로 해결 방법을 찾다가 우연히 발견했습니다. 편집을 조금 했을 뿐입니다.
매우 간단하고 유용하며, 자바스크립트/jquery/...의 한 줄 이상의 javascript/jquery/... 또는 클라이언트 측 코드를 수행하는 데 사용할 수 있습니다.
private void MessageBox(string msg)
{
Label lbl = new Label();
lbl.Text = "<script language='javascript'>" + msg + "')</script>";
Page.Controls.Add(lbl);
}
출처: https://stackoverflow.com/a/9365713/824068
string script = "<script type="text/javascript">alert('" + cleanMessage + "');</script>";
문자열을 사용해야 합니다.이 경우 형식을 지정합니다.이것이 더 나은 코딩 스타일입니다.다음과 같은 이점이 있습니다.
string script = string.Format(@"<script type='text/javascript'>alert('{0}');</script>");
또한 이스케이프해야 할 때는 " 기호를 표시하거나 아포스트로피를 사용합니다.
private void MessageBox(string msg)
{
Label lbl = new Label();
lbl.Text = string.Format(@"<script type='text/javascript'>alert('{0}');</script>",msg);
Page.Controls.Add(lbl);
}
인용문에서 벗어나야 합니다("특수 문자" 섹션 참조).슬래시를 앞에 추가하여 이 작업을 수행할 수 있습니다.
string script = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
Response.Write(script);
페이지가 나중에 리디렉션되지 않는 한 저는 이것을 사용하고 작동합니다.표시하고 리디렉션에 관계없이 사용자가 [확인]을 클릭할 때까지 기다립니다.
/// <summary>
/// A JavaScript alert class
/// </summary>
public static class webMessageBox
{
/// <summary>
/// Shows a client-side JavaScript alert in the browser.
/// </summary>
/// <param name="message">The message to appear in the alert.</param>
public static void Show(string message)
{
// Cleans the message to allow single quotation marks
string cleanMessage = message.Replace("'", "\\'");
string wsScript = "<script type=\"text/javascript\">alert('" + cleanMessage + "');</script>";
// Gets the executing web page
Page page = HttpContext.Current.CurrentHandler as Page;
// Checks if the handler is a Page and that the script isn't allready on the Page
if (page != null && !page.ClientScript.IsClientScriptBlockRegistered("alert"))
{
//ClientScript.RegisterStartupScript(this.GetType(), "MessageBox", wsScript, true);
page.ClientScript.RegisterClientScriptBlock(typeof(webMessageBox), "alert", wsScript, false);
}
}
}
호출 스크립트는 이벤트가 PAGE LOAD 이벤트인 경우에만 이 작업을 수행할 수 있습니다.
전화해야 합니다, 응답하십시오.쓰기(스크립트);
위와 같이 문자열 스크립트 = "clean" + cleanMessage + "";;; 응답.쓰기(스크립트);
적어도 페이지 로드 이벤트에 사용할 수 있습니다.
당신이 파일 뒤에 있는 코드를 마사지하고 싶다면, 이것을 시도하세요.
string popupScript = "<script language=JavaScript>";
popupScript += "alert('Your Massage');";
popupScript += "</";
popupScript += "script>";
Page.RegisterStartupScript("PopupScript", popupScript);
당신은 다음 코드를 사용할 수 있습니다.
StringBuilder strScript = new StringBuilder();
strScript.Append("alert('your Message goes here');");
Page.ClientScript.RegisterStartupScript(this.GetType(),"Script", strScript.ToString(), true);
<!--Java Script to hide alert message after few second -->
<script type="text/javascript">
function HideLabel() {
var seconds = 5;
setTimeout(function () {
document.getElementById("<%=divStatusMsg.ClientID %>").style.display = "none";
}, seconds * 1000);
};
</script>
<!--Java Script to hide alert message after few second -->
메시지 박스를 부르는 것은 간단하기 때문에 뒤에서 코딩하거나 함수를 호출하고 싶다면, 더 나은 것인지 아니면 아닐 수도 있다고 생각합니다.프로세스가 있습니다. 네임스페이스를 사용하면 됩니다.
using system.widows.forms;
그런 다음 메시지 상자를 표시할 경우 C#과 같이 간단하게 호출합니다.
messagebox.show("Welcome");
언급URL : https://stackoverflow.com/questions/5825165/javascript-alert-showmessage-from-asp-net-code-behind
'programing' 카테고리의 다른 글
탭으로 구분된 데이터 파일을 생성하기 위한 SQL Plus 설정 (0) | 2023.07.13 |
---|---|
Oracle 11g 서버에서 시작 링크가 작동하지 않음 (0) | 2023.07.08 |
스프링 부트: 동적 상위 개체에서 JSON 응답 래핑 (0) | 2023.07.08 |
폴더의 모든 파일을 여는 방법 (0) | 2023.07.08 |
PLSQL 하위 쿼리 및 반환 절을 사용하여 에 삽입 (0) | 2023.07.08 |