我有page.aspx,其顶行如下:
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="page.aspx.cs" Inherits="className"%>
这是我第一次尝试使用aspx(或任何)网页。
我认为我需要在页面中的某个地方放置一个runat="server"
,我将其放入HTML主体代码中,因为有多个输入(尽管不是我的主要问题,也可以使用一种更好的方法来实现)
<body runat="server" id="body">
我在page.aspx.cs上拥有的C#在下面
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),所以我依靠上面的方法尝试找到任何控件。
在C#foreach循环中包含的实例中,contr
列表元素在Text
处具有属性,该属性包含作为字符串的字符串,我希望将其包含在Controls集合中。使用Text
属性上方的确切代码将'body'标记内的所有内容都包含为字符串。
因为这是我第一次发布,所以我肯定出错了,所以请告诉我是否需要更多信息。
已将body元素的find方法替换为
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
该元素和该元素。
答案 0 :(得分:0)
因此对于像我这样的白痴,使用CodeBehind
并尝试获取元素。据我所知,要查找的每个元素必须在标记内包含runat="server"
,并且整个页面没有一个runat="server"
。
由于我没有.aspx.designer.cs
文件,因此尝试直接将元素id用作对象是行不通的。在Visual Studio 2017中,选择可转换的.aspx
文件后,可在“项目”下拉菜单中找到更正此“转换为Web应用程序”的选项。