我在ASPX页面中手动添加了几个字段,实际上是FormView
。通过手动,我的意思是直接在Markup
编辑器中键入代码。
现在,当我试图访问后面代码中的那些控件时,intellisense中没有任何内容出现。
我删除了designer.cs
文件并右键单击了ASPX页面并选择了Convert to web application
,但仍然没有。
设计器文件定义了FormView
控件,但没有关于它的子控件。
我真的需要使用FindControl
来实现这项功能吗?告诉我你是否需要发布一些代码,因为目前我可能对ASP.NET实际工作有点困惑(或者目前还没有)。
这是标记代码:
<%@ Page Language="C#" MasterPageFile="~/Site.Master" AutoEventWireup="True" CodeBehind="WebForm_PatientForm.aspx.cs" Inherits="WebAppWalkthrough.WebForm_PatientForm" Title="Employee form" %>
<%@ MasterType VirtualPath="~/Site.Master" %>
<asp:Content ContentPlaceHolderID="HeadContent" runat="server">
</asp:Content>
<asp:Content ContentPlaceHolderID="MainContent" runat="server">
<asp:FormView ID="PatientForm" runat="server" DefaultMode="Edit">
<EditItemTemplate>
<table>
<tr>
<td class="FormViewHeader">
Patient Name:
</td>
<td>
<asp:TextBox ID="PatientName" ReadOnly="true" runat="server" Text='<%# Bind("FullName") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Patient ID:
</td>
<td>
<asp:TextBox ID="PatientID" ReadOnly="true" runat="server" Text='<%# Bind("patientid") %>'></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Eligibility
</td>
<td>
<asp:DropDownList runat="server" ID="Eligibility" SelectedValue='<%# Bind("service_executive_eligibility") %>' >
<asp:ListItem Value="" Text="N/A" />
<asp:ListItem Value="True" Text="Yes" />
<asp:ListItem Value="False" Text="No" />
</asp:DropDownList>
</td>
</tr>
</table>
<asp:LinkButton ID="LinkButton2" runat="server" OnCommand="UpdatePatientInfo" Text="UpdateInfo" CommandArgument='<%# Bind("patientid") %>'>Update</asp:LinkButton>
<asp:LinkButton ID="LinkButton3" runat="server" OnCommand="CancelEditPatient" CommandName="CancelUpdate" Text="CancelInfo">Cancel</asp:LinkButton>
</EditItemTemplate>
<InsertItemTemplate>
<table>
<tr>
<td class="FormViewHeader">
Employee First Name:
</td>
<td>
<asp:TextBox ID="FirstName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Employee Last Name:
</td>
<td>
<asp:TextBox ID="LastName" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Email address:
</td>
<td>
<asp:TextBox ID="EmailAddress" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Work phone number:
</td>
<td>
<asp:TextBox ID="PhoneNumber" runat="server"></asp:TextBox>
</td>
</tr>
<tr>
<td class="FormViewHeader">
Eligibility
</td>
<td>
<asp:DropDownList runat="server" ID="Eligibility">
<asp:ListItem Value="True" Text="Yes" />
<asp:ListItem Value="False" Text="No" />
</asp:DropDownList>
</td>
</tr>
</table>
<asp:LinkButton ID="LinkButton5" runat="server" OnCommand="AddEmployee" Text="Add Employee">Add</asp:LinkButton>
</InsertItemTemplate>
</asp:FormView>
</asp:Content>
即使我在设计器文件中手动添加控件,我在运行时的代码中也会得到一个空引用错误(即使知识产权在运行时获取FirstName
对象为空)。
编辑:我会尝试安装VS2010 SP1和this hotfix我找到并发布结果。
编辑2 :所以我安装了VS2010 SP1并没有解决问题。我无法安装此修补程序,因为我的系统是x64。
所以我放弃了VS2010并尝试使用VS2013,它仍然没有拾取标记控件。
即使Page.FindControl("ControlName")
返回null
。那个网页或VS2013的东西很烂......
感谢。
答案 0 :(得分:0)
我之前遇到过与WebForms的Telerik UI组件类似的问题。我想访问在网格中的模板内定义的项目,但不幸的是,唯一的方法是挖掘该网格的子元素。那些内部元素也不存在于designer.cs文件中。 我不确定,但它可能是WebForms中嵌套元素的常见行为。