การรับค่าจากการใช้ javascript prompt ใน master page ไม่ได้
ตัวอย่างที่เขียนไว้ไหม๊ครับ ว่ามันส่งไปแบบบไหน ?
Date :
2014-07-09 17:22:24
By :
mr.win
อันนี้โค๊ด แบบไม่ใช่ content เป็นหน้าธรรมดาเลยครับ
behind:
Code (VB.NET)
Public Class WebForm7
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Response.Write(Hidden1.Value)
MsgBox(Hidden1.Value)
End Sub
End Class
html:
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm7.aspx.vb" Inherits="SlipPut.WebForm7" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<script type="text/javascript">
function abc() {
var str = "ทดสอบ";
document.getElementById("Hidden1").value = str;
}
</script>
<body>
<form id="form1" runat="server">
<div>
<input id="Hidden1" type="hidden" runat="server" />
<asp:Button ID="Button1" runat="server" OnClientClick="abc()" Text="Button"
onclick="Button1_Click" />
</div>
</form>
</body>
</html>
โค๊ดแบบเป็น content ซึ่งค่าคำว่า "ทดสอบ" จะไม่แสดง หรือตามที่ผมคิดคือ ค่ามันไม่แสดงออกมา แต่ msgbox ก็ขึ้นปกติ แต่ค่ามันว่างๆโล่งๆครับ
Behind:
Code (VB.NET)
Public Class WebForm8
Inherits System.Web.UI.Page
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As EventArgs) Handles Button1.Click
Response.Write(Hidden1.Value)
MsgBox(Hidden1.Value)
End Sub
End Class
html:
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/main.Master" CodeBehind="WebForm8.aspx.vb" Inherits="SlipPut.WebForm8" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
function abc() {
var str = "ทดสอบ";
document.getElementById("Hidden1").value = str;
}
</script>
<div>
<input id="Hidden1" type="hidden" runat="server" />
<asp:Button ID="Button1" runat="server" OnClientClick="abc()" Text="Button"
onclick="Button1_Click" />
</div>
</asp:Content>
ปล.อันนี้เป็นแบบโค๊ดง่ายๆครับ ไม่ใช่ prompt เดียวผมปรับใช้อีกทีครับ ขอบคุณครับ
Date :
2014-07-10 16:17:07
By :
suck9999
ลองแก้ type='hidden' เป็น type='text' ลองดูก่อนไหมครับ
อันบนมีฟอร์มครอบ
แต่อันล่างทำไมไม่มีครับ
Date :
2014-07-10 17:30:45
By :
Chaidhanan
ในกรณีที่ใช้ Master Page ผมอธิบายตามที่ผมเข้าใจครับ
--- Server Controls ทุกตัว ID มันจะเปลี่ยนไป คลับคล้ายคลับคลาว่าเป็น ctl00_ContentPlaceHolder1_Hidden1
Code (JavaScript)
document.getElementById("Hidden1").value = str;
//ลองดูซิเผื่อฟลุกครับ
document.getElementById("ctl00_ContentPlaceHolder1_Hidden1").value = str;
Date :
2014-07-10 18:04:04
By :
หน้าฮี
HeartBeat= ใส่แล้วจะ error ดังนี้ครับ
Server Error in '/' Application.
A page can have only one server-side Form tag.
Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.
Exception Details: System.Web.HttpException: A page can have only one server-side Form tag.
Source Error:
An unhandled exception was generated during the execution of the current web request. Information regarding the origin and location of the exception can be identified using the exception stack trace below.
แต่ถ้าเอาออกจะใช้ได้ปกติเลยครับ แต่ค่าจะไม่ตอบกลับมา
Chaidhanan= ลองแล้วครับ เป็นค่าว่างๆกลับมาเหมือนกันครับ /ถ้าใส่ฟอร์ทจะ error ครับ
หน้าฮี= อยากให้คุณอธิบายส่วน ctl00_ContentPlaceHolder1_Hidden1 เพิ่มหน่อยครับ ว่าจะรู้ได้อย่างไหร่ว่าชื่อข้างหน้าต้องเป็นอะไรครับ
ขอบคุณทุกท่านครับ
Date :
2014-07-11 08:00:47
By :
suck9999
<form id="form1" runat="server">
<div>
<input id="Hidden1" type="hidden" runat="server" />
<asp:Button ID="Button1" runat="server" OnClientClick="abc()" Text="Button"
onclick="Button1_Click" />
</div>
runat="server" ให้มีอันเดียว ใน <form> ครับ อันอื่นเอาออก
Server Error in '/' Application.
A page can have only one server-side Form tag.
Date :
2014-07-11 08:27:58
By :
Chaidhanan
ตอบความคิดเห็นที่ : 7 เขียนโดย : Chaidhanan เมื่อวันที่ 2014-07-11 08:27:58
เมื่อเช้าไปทำบุญใส่บาตรพระสงฆ์มาแล้วได้ตั้ง 9 รูปแน่ะ อีกสักพักหนึ่งจะพาแม่ยายและภรรยาไปทำบุญต่อที่
วัดพระพุทธบาท จ.สระบุรี
วันพรุ่งนี้ก็จะพาแม่ยายและภรรยาไปทำบุญที่วัดบ้านแหลม จ.สมุทรสงคราม
@ คุณตาครับ
Master Page ก็คือคำสั่ง include('xxx.php'); นั่นแหละครับ
แต่มันอุดช่องโหว่และทำได้สมบูรณ์แบบกว่า PHP
@ suck9999
สาระสำคัญมันหายไปครับ main.Master
พูดถึงวิธีปลูกต้นมะขาม แต่คุณยกตัวอย่าง ผลมะละกอสุกมาให้ดู
File main.Master
Code (VB.NET)
<%@ Master Language="VB" AutoEventWireup="false" CodeBehind="main.master.vb" Inherits="SlipPut.main" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</form>
</body>
</html>
สังเกตุว่า บรรทัดที่ 14. สำหรับแสดงเนื้อหา PageA, PageB, PageC, ... ทั้งหลายแหล่
ต้องรีบไปแล้ว ไม่มีเวลาอธิบายแล้ว
สรุปจริงฯมันต้องใช้แบบนี้ครับ
<%=ServerControlID.ClientID%>
ประวัติการแก้ไข 2014-07-11 08:53:40 2014-07-11 08:57:02 2014-07-11 08:57:19
Date :
2014-07-11 08:50:15
By :
หน้าฮี
ได้แล้วครับ
คือถ้ามันอยู่ใน content page แล้วจะเอา control มาใช้ในฝั่ง html มันจะเปลี่ยนชื่อ control นั้นๆครับ
ที่นึกอันนี้ออกได้เพราะ คุณ หน้าฮี ขอบคุณครับ
แต่อันสุดท้ายงงมาก แต่ก็ขอบคุณครับ ^^"
<%@ Page Title="" Language="vb" AutoEventWireup="false" MasterPageFile="~/main.Master" CodeBehind="WebForm8.aspx.vb" Inherits="SlipPut.WebForm8" %>
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="server">
<script type="text/javascript">
function abc() {
var str = "ทดสอบ";
document.getElementById("ContentPlaceHolder1_Hidden1").value = str;
alert(document.getElementById("ContentPlaceHolder1_Hidden1").value);
}
</script>
<div>
<input id="Hidden1" type="hidden" runat="server" name="H1" />
<asp:Label ID="Label1" runat="server" Text="Label"></asp:Label>
<br />
<asp:Button ID="Button1" runat="server" OnClientClick="abc()" Text="Button"
onclick="Button1_Click" />
</div>
</asp:Content>
ก็คือตรง จาก hidden1 เป็น ContentPlaceHolder1_Hidden1 โดยชื่อข้างหน้าจะเป็นไปตาม ContentPlaceHolderID ที่เอาcontrol ไปใส่ อันนี้ตามที่ผมเข้าใจนะ
Date :
2014-07-11 15:53:26
By :
suck9999
ตามนั้นครับ
ปล. คลิ๊กขวา View Source สักสองสามครั้ง มันก็น่าจะเดาออกแล้วครับ
Date :
2014-07-11 21:39:20
By :
หน้าฮี
Load balance : Server 05