我有两个名为TimeSheet.aspx.cs和TimSheet.aspx的文件,下面给出了该文件的代码供您参考.
当我构建应用程序即时获取错误"名称'GridView1'在当前上下文中不存在"甚至认为我有一个id为GridView1的控件,我也添加了runat ="server".
我无法弄清楚导致这个问题的原因.任何一个数字都可以在这里发生.
感谢和问候,
=======================================
TimeSheet.aspx.cs
=======================================
#region Using directives
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using TSMS.Web.UI;
#endregion
public partial class TimeSheets: Page
{
protected void Page_Load(object sender, EventArgs e)
{
FormUtil.RedirectAfterUpdate(GridView1, "TimeSheets.aspx?page={0}");
FormUtil.SetPageIndex(GridView1, "page");
FormUtil.SetDefaultButton((Button)GridViewSearchPanel1.FindControl("cmdSearch"));
}
protected void GridView1_SelectedIndexChanged(object sender, EventArgs e)
{
string urlParams = string.Format("TimeSheetId={0}", GridView1.SelectedDataKey.Values[0]);
Response.Redirect("TimeSheetsEdit.aspx?" + urlParams, true);
}
protected void GridView1_RowCommand(object sender, GridViewCommandEventArgs e) {
}
}
=======================================================
TimeSheet.aspx
======================================================= …
Run Code Online (Sandbox Code Playgroud) 我搜索过该网站,但我无法找到解决问题的方法,所以如果已经得到解答,我会道歉(我确定有人必须先问过这个问题).
我编写了一个jQuery Popup窗口,我将其打包为WebControl和IScriptControl.最后一步是能够在我的控件的标签内写入标记.我已经使用了InnerProperty属性几次,但仅用于包含强类型类的列表.
这是我在WebControl上的属性:
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public something??? Content
{
get
{
if (_content == null)
{
_content = new something???();
}
return _content;
}
}
private something??? _content;
Run Code Online (Sandbox Code Playgroud)
这是我所追求的HTML标记:
<ctr:WebPopup runat="server" ID="win_Test" Hidden="false" Width="100px" Height="100px"
Modal="true" WindowCaption="Test Window" CssClass="window">
<Content>
<div style="display:none;">
<asp:Button runat="server" ID="Button1" OnClick="Button1_Click" />
</div>
<%--Etc--%>
<%--Etc--%>
</Content>
</ctr:WebPopup>
Run Code Online (Sandbox Code Playgroud)
不幸的是我不知道我的Content属性应该是什么类型.我基本上需要复制UpdatePanel
的ContentTemplate
.
编辑:所以以下允许自动创建一个模板容器,但没有控件出现,我正在做什么错了?
[PersistenceMode(PersistenceMode.InnerProperty)]
[DesignerSerializationVisibility(DesignerSerializationVisibility.Content)]
public ITemplate Content
{
get
{
return _content;
}
set
{
_content = value;
}
}
private ITemplate …
Run Code Online (Sandbox Code Playgroud) 示例代码:
var div = new HtmlGenericControl("div");
div.Controls.Add(new Literal() { ID = "litSomeLit" });
var lit = (Literal)div.FindControl("litSomeLit");
Assert.IsNotNull(lit);
Run Code Online (Sandbox Code Playgroud)
此代码未通过断言,因为lit为null.调试显示div.Controls肯定包含ID为"litSomeLit"的文字.我的问题是"为什么?" 并且"有没有办法获得对特定ID的控制,而不是一次手动一个元素递归搜索div.Controls []?"
我这样做的原因是我的实际应用并不那么简单 - 我正在编写的方法给出了一个复杂的控件,在许多可能的配置中有几个子控件.我需要访问几个层的特定控件(例如,具有ID"txtSpecificControl"的控件可能在StartingControl.Controls[0].Controls[2].Controls[1].Controls[3]
).通常我可以这样做FindControl("txtSpecificControl")
,但是当控件刚刚动态创建时(例如上面的示例代码中),这似乎不起作用.
我发现这样做的每个样本都包括在我的页面的OnLoad之外编写一个函数来执行此操作,但我很好奇是否有更简洁的方法来实现它.我在HeaderTemplate中有一个Label,我只想将标签的文本设置为字符串.如果标签位于转发器之外,我可以执行以下操作:
Month.Text = Enum.GetName(typeof(Month), Convert.ToInt16(MonthList.SelectedValue));
Run Code Online (Sandbox Code Playgroud)
有简洁的方法吗?
我想使用 WebBrowser 控件加载一些本地文件 html 页面。我知道 WebBrowser 只是 InternetExplorer 的包装。我记得微软允许 Vista(?) 中的用户“卸载”InternetExplorer...
问题是:卸载InternetExplorer后WebBrowser是否可以顺利运行?这个卸载不会影响负责网页渲染的DLL吗?
我将不胜感激对此事的任何意见:)!
我试图在一个网页设计中找出问题,并记得用一个简单的javascript来获取浏览器版本,因为我有完全2个不同的行为
所以我加上这个:
<div id="example"></div>
<script type="text/javascript">
txt = "<p>Browser CodeName: " + navigator.appCodeName + "</p>";
txt+= "<p>Browser Name: " + navigator.appName + "</p>";
txt+= "<p>Browser Version: " + navigator.appVersion + "</p>";
txt+= "<p>Cookies Enabled: " + navigator.cookieEnabled + "</p>";
txt+= "<p>Platform: " + navigator.platform + "</p>";
txt+= "<p>User-agent header: " + navigator.userAgent + "</p>";
document.getElementById("example").innerHTML=txt;
</script>
Run Code Online (Sandbox Code Playgroud)
并发现了这个:
即使我在此计算机上安装了Internet Explorer 8,webbrowser控件也会加载一个不是已安装的IE版本(Internet Explorer 7).
如何强制使用正确的版本?
我对在ASP.NET中获得结果的几种方法之间的选择很困惑.
例如,Web窗体控件SqlDataSource
,您检索其他控件从数据库并显示结果数据,如DataGridView
,BulletedList
等.但是所有这些可以用C#编写,创建一个字符串,将与retrived数据保持你的HTML代码的东西,那么你插入你的Html代码div
使用innerHTML
.有什么不同?
例:
[ <div id='block1' runnat='server'></div]
Run Code Online (Sandbox Code Playgroud)
在CodeBehind中
[ block1.innerHTML = myString;]
Run Code Online (Sandbox Code Playgroud)
编写C#代码SqlConnect,Loops,Datatable后,将HTML字符串的值放入myString.
为什么不用C#实现一切?
我有asp:label
一个嵌套的自定义控件,它只是不呈现.我尝试注册一个类型的自定义WebControlAdapter
,Label
而在调试时我注意到Controls
集合中显然没有控件,它似乎完全忽略了任何嵌套元素.
这是标记
<asp:Label ID="lbl13" runat="server" AssociatedControlID="txt13" Text="<%$ Resources:Resources, lbl13 %>">
<asp:ValidationMessage ID="vm13" runat="server" MessageFor="txt13" CssClass="field-validation-error"></asp:ValidationMessage>
</asp:Label>
Run Code Online (Sandbox Code Playgroud)
知道如何绕过这个问题吗?
我在 VB.NET 中有一个代码只是为了在 ASP.NET WebForm 中上传文件。它在 Firefox、Chrome 和 Safari 中完美运行。但是同样的代码无法在Microsoft Internet Explorer 和Microsoft Edge 中保存上传的文件,尽管应用程序中没有任何错误或异常。我需要有人的帮助来解决这个问题。我的 .aspx 代码和代码隐藏文件的代码如下:
WebForm1.ASPX
<%@ Page Language="vb" AutoEventWireup="false" CodeBehind="WebForm1.aspx.vb" Inherits="FileUploadTest.WebForm1" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title></title>
</head>
<body>
<form id="form1" runat="server">
<div>
<asp:FileUpload ID="Uploader" runat="server" />
<asp:Button ID="cmdUpload" runat="server" Text="Upload" />
</div>
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
代码隐藏文件
Imports System.IO
Public Class WebForm1
Inherits Page
Dim uploadDirectory As String = "C:\Uploads\"
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
End Sub
Protected …
Run Code Online (Sandbox Code Playgroud) 语境:
我创建了一个自定义的"脚本"控件,我在几个用户控件中使用它们(这些都是通过ASCX路径加载的).此脚本控件提供了一些有趣的功能,但我现在希望能够将脚本从 ASCX标记移出到与ASCX控件相同的目录中,然后动态加载此标记.(我不能使用普通<script>
标签,因为Script控件会创建一个特殊的绑定上下文,以便可以通过干净的API访问它.)
那个,目前我的脚本控件就像(<script>
里面的元素由Script控件使用,不应该与最终的HTML标记混淆):
<SmartScript runat="server">
<script>/* the code here */</script>
</SmartScript>
Run Code Online (Sandbox Code Playgroud)
但我希望它可以用作:
<SmartScript runat="server">
<script src="~parent/theCode.js" />
</SmartScript>
Run Code Online (Sandbox Code Playgroud)
但是,我希望将"〜parent"扩展到ASCX控件的文件系统位置,以便我可以直接加载文件并将其用作渲染脚本的内容.
也就是说,给定基于ASCX的用户控件(可以通过Parent属性获取),如何确定容纳ASCX标记文件的系统路径?(而且,我应该注意哪些警告?)
优选地,这将是完整的路径,因为~/_CONTROLTEMPLATES/prj/ctrl.ascx"
仍然会留下另一层重定向(~
这里的意思是什么?).
(应用程序以足够的信任运行以从文件系统读取,我正在避免嵌入式资源,因此我可以推送布局更改,而无需推送DLL并重新启动IIS工作程序.)