У меня есть page.aspx, верхняя строка которого выглядит следующим образом:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="page.aspx.cs" Inherits="className"%>
Это первый раз, когда я пытался запустить aspx (или любую другую) веб-страницу.
Я думаю, что мне нужно runat="server"
где-то на странице, я поместил это в HTML-тег body, так как есть несколько входов (лучший способ сделать это также будет приветствоваться, хотя это и не мой главный вопрос)
<body runat="server" id="body">
C # у меня на page.aspx.cs ниже
using System;
using System.Diagnostics;
using System.Web.UI;
public partial class className : Page
{
protected void Page_Load(object sender, EventArgs e)
{
HtmlGenericControl body = FindControl("body") as HtmlGenericControl;
if (body != null)
{
foreach (Control contr in body.Controls)
{
Debug.WriteLine(contr);
}
}
else
{
//comment
}
}
}
Я не могу использовать Control.FindControl (ID), поэтому я прибегнул к описанному выше, чтобы попытаться найти любой элемент управления.
В экземпляре, содержащемся в цикле foreach C #, элемент списка contr
имеет свойство Text
, содержащее в виде строки то, что я ожидал бы содержать в коллекции Controls. Использование точного кода выше свойства Text
содержит все, что находится внутри тега 'body' в виде строки.
Так как это мой первый раз, я уверен, что все неправильно, поэтому, пожалуйста, скажите мне, если нужна дополнительная информация.
Заменив метод find для элемента body на
HtmlGenericControl body = FindControl("body") as HtmlGenericControl;
И со следующим содержимым файла aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="JSPCheck.aspx.cs" Inherits="JSPCheckForm"%>
<!DOCTYPE html>
<html xmlns="https://www.w3.org/1999/xhtml" id="html">
<head>
<script src="https://ajax.aspnetcdn.com/ajax/jQuery/jquery-3.3.1.js" > </script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery.form/4.2.2/jquery.form.js" > </script>
<script src="https://ajax.aspnetcdn.com/ajax/bootstrap/4.1.1/bootstrap.js" > </script>
<link href="https://ajax.aspnetcdn.com/ajax/bootstrap/4.1.1/css/bootstrap.css" rel="stylesheet" type="text/css" />
<script src="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/js/bootstrap-datepicker.js" > </script>
<link href="https://cdnjs.cloudflare.com/ajax/libs/bootstrap-datepicker/1.8.0/css/bootstrap-datepicker.css" rel="stylesheet" type="text/css" />
<title>Page</title>
</head>
<body runat="server" id="body">
<p id="para1">test paragraph</p>
<h3 id="h31">test header</h3>
<form method="post" id="mainform">
<!-- "Serial Number" row -->
<div class="form-group">
<label for="SerialNumber" class="control-label" >Serial Number</label>
<!-- Entry box -->
<input class="form-control" name="SerialNumber" value="" id="SerialNumber" type="text"/>
</div>
<div class="form-group">
<button type="submit" name="command1" value=" " class="btn btn-primary" id="Submit1"> Verify </button>
</div>
</form>
</body>
</html>
Debug выводит на консоль следующую строку
System.Web.UI.LiteralControl
и при этой отладке contr
имеет свойство Text
"\r\n \r\n <p id=\"para1\">test paragraph</p>\r\n\r\n <h3 id=\"h31\">test header</h3>\r\n\r\n\r\n <form method=\"post\" id=\"mainform\">\r\n <!-- \"Serial Number\" row -->\r\n <div class=\"form-group\">\r\n <label for=\"SerialNumber\" class=\"control-label\" >Serial Number</label>\r\n <!-- Entry box -->\r\n <input class=\"form-control\" name=\"SerialNumber\" value=\"\" id=\"SerialNumber\" type=\"text\"/>\r\n </div>\r\n\r\n <div class=\"form-group\">\r\n <button type=\"submit\" name=\"command1\" value=\" \" class=\"btn btn-primary\" id=\"Submit1\"> Verify </button>\r\n </div>\r\n </form>\r\n \r\n "
и ID ctl00
Дополнительное тестирование показало, что если я переместу runat="server"
, то смогу FindControl
только этот элемент и этот элемент.