Я пытаюсь получить доступ к скрытому полю hidJsonHolder
значение из моего masterpage
, которое установлено на моей странице aspx веб-формы, но не могу получить доступ к нему на главной странице codebehind
.
Как я могу получить это чтобы работать?
Это кажется достаточно простым, но не знаю, почему он не работает ... значение hiddenfield hidJsonHolder
равно null ...
Я пробовал тот же код в webform aspx без masterpage и работала правильно ....
Mp cs
public partial class MasterPage : System.Web.UI.MasterPage
{
protected void Page_Load(object sender, EventArgs e)
{
HiddenField hid1 = (HiddenField)ContentPlaceHolder1.FindControl("hidJsonHolder");
if (hid1 != null)
{
Response.Write(hid1.Value);
}
}
}
Mp aspx
<html>
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title></title>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.1/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.min.js" type="text/javascript"></script>
<script src="DDScript.js" type="text/javascript"></script>
<style>
DIV.ContainerCenter {
width: 700px;
margin-left: auto;
margin-right: auto;
}
DIV.ContainerCenter TD {
width: 150px;
margin-right: 30px;
text-align: center;
}
DIV.connectedSortable {
text-align: left;
border: 1px solid black;
float: left;
margin-right: 30px;
overflow: auto;
height: 200px;
width: 300px;
white-space: nowrap;
}
DIV.connectedSortable DIV {
margin: 0 5px 2px 5px;
cursor: default;
white-space: nowrap;
}
DIV.selectedItem {
background-color: Blue;
color: White;
}
</style>
<asp:ContentPlaceHolder ID="head" runat="server">
</asp:ContentPlaceHolder>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ContentPlaceHolder ID="ContentPlaceHolder1" runat="server">
</asp:ContentPlaceHolder>
</div>
</form>
</body>
</html>
Веб-форма cs
protected void Page_Load(object sender, EventArgs e)
{
HiddenField hid1 = (HiddenField)FindControl("hidJsonHolder");
if (hid1 != null)
{
Response.Write(hid1.Value);
}
}
protected void btnFinal_Click(object sender, EventArgs e)
{
JavaScriptSerializer jsSer = new JavaScriptSerializer();
object obj = jsSer.DeserializeObject(hidJsonHolder.Value);
if (obj != null)
{
Movie[] listMovie = jsSer.ConvertToType<Movie[]>(obj);
foreach (Movie p in listMovie)
{
string pattern = @"\w+([-+.]\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*";
Regex re = new Regex(pattern);
if (p.ToString() != null)
{
MatchCollection matches = re.Matches(p.ToString());
if (matches.Count > 0)
{
for (int i = 0; i < matches.Count; i++)
{
Response.Write(matches[i] + "; ");
}
}
}
}
}
}
protected string GetJsonData()
{
List<Movie> listOfMovies = new List<Movie>();
string query = "SELECT * FROM Country ORDER BY NAME DESC LIMIT 15;";
string constr = ConfigurationManager.ConnectionStrings["cn"].ConnectionString;
using (MySqlConnection con = new MySqlConnection(constr))
{
using (MySqlCommand cmd = new MySqlCommand(query))
{
cmd.CommandType = CommandType.Text;
cmd.Connection = con;
con.Open();
using (MySqlDataReader sdr = cmd.ExecuteReader())
{
while (sdr.Read())
{
Movie item = new Movie();
item.id = Convert.ToInt32(sdr["Capital"]);
item.name = sdr["Name"].ToString();
listOfMovies.Add(item);
}
}
}
con.Close();
List<Movie> someList = (from item in listOfMovies
select new Movie { id = item.id, name = item.name }).ToList<Movie>();
JavaScriptSerializer jsSer = new JavaScriptSerializer();
string str = jsSer.Serialize(someList);
return str;
}
}
public class Movie
{
public string name { get; set; }
public int id { get; set; }
public override string ToString()
{
return string.Format("[id={0};name={1}]\n", id, name);
}
}
Веб-форма aspx
<asp:Content ID="Content1" ContentPlaceHolderID="head" runat="Server">
<script type="text/javascript">
$(function () {
var $json = <% =GetJsonData() %>;
pageload($json);
});
</script>
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="ContentPlaceHolder1" runat="Server">
<div class="ContainerCenter">
<table>
<tr>
<td>Source</td>
<td>Destination</td>
</tr>
</table>
<div id="list1" class="connectedSortable">
</div>
<div id="list2" class="connectedSortable">
</div>
</div>
<div style="clear: both;"></div>
<asp:Button Text="GetLength" runat="server"
ID="btnFinal"
OnClick="btnFinal_Click"
OnClientClick="CreateJson()" />
<br />
<asp:HiddenField runat="server" ID="hidJsonHolder" />
</asp:Content>