如何使用简单/小巧的JavaScript找出包含HTML元素的FORM?在下面的例子中,如果我已经掌握了名为'message'的SPAN,我怎样才能轻松获得FORM元素?
<form name="whatever">
<div>
<span id="message"></span>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
SPAN可能嵌套在其他表或DIV中,但它似乎太冗长,无法迭代.parentElement并在树上工作.有更简单,更短的方式吗?
如果它不是SPAN,而是INPUT元素,那会更容易吗?他们是否有一个指向包含FORM的财产?谷歌说没有......
我有一个内部应用程序,我需要有两个日期类型元素的下拉列表: 月和年.这些值不在数据库或其他信息库中.
我知道我可以通过将它们添加到像对象这样的字典中来设置一个包含我需要的值的列表(我需要将Month与数值表示相关联,January => 01):
var months = new Dictionary<String,String>();
months.Add("01", "January");
...
Run Code Online (Sandbox Code Playgroud)
今年的下拉列表将更容易,因为我可以选择一个起始年份并在通用列表中迭代到当前或当前+ 1年.
有没有更好的方法来处理这些数据元素?内置的东西,或者我应该实现的良好设计模式?
我有一个多步骤表单,用户可以导航到任何页面来修改或添加信息.有一个菜单显示当前进度,用户已完成的步骤,并允许导航到任何已完成或待处理的步骤.
尽管有一个大按钮"保存并继续",一些用户点击此菜单进一步导航.我必须检查 - 如果表格中的值已更改并询问:"保存更改?是/否".
什么是最好的方法(使用最少的客户端JavaScript代码),建议我检查表单值是否已更改?
稍后编辑:
我忘了告诉多步表单在步骤之间使用回发.
我正在使用asp.net webforms; 我想提交一个表单并保持按钮被禁用,直到它被保存到我的数据库,就像Stackoverflow一样.有什么建议吗?
protected void Lb_Save_Click(object sender, EventArgs e)
{
//disable my button
//Do a DB insert
//enable my button
}
Run Code Online (Sandbox Code Playgroud)
编辑:
我会首先进行客户端验证,所以我不希望我的按钮被禁用,但是我想在onclick函数启动后禁用它.希望你们都明白我的观点.
另外我想对asp:linkbutton做同样的事情,但我不知道firefox如何表现.由于链接按钮将呈现为锚,我如何禁用它?
伙计们,你没有得到我的问题.
如何在回发期间禁用asp:按钮?(不是在jQuery/Javascript中)
我有以下html:
<html>
<body>
<form runat="server">
Name: <input type="text" name="name" />
<br />
<input type="submit" name="submit" />
</form>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
如何检索发布回Web服务器的"名称"文本框中的值以在ASP.NET WebForms中进行操作?
(我知道ASP.NET内置控件及其可能性,但我正在寻找一个"干净"的解决方案,而不使用内置的ASP.NET控件)
我在标记为a的页面上有一个方法,[WebMethod]它使用一些会话状态作为其操作的一部分.在我编写这段代码之后,EnableSessionState当你在a中使用会话状态时,我突然想要使用闪存[WebMethod](例如,请参阅此处:http://msdn.microsoft.com/en-us/library/byxd99hx.aspx) .但似乎工作正常.为什么?
示例代码背后:
protected void Page_Load(object sender, EventArgs args) {
this.Session["variable"] = "hey there";
}
[System.Web.Services.WebMethod]
public static string GetSessionVariable() {
return (string)HttpContext.Current.Session["variable"];
}
Run Code Online (Sandbox Code Playgroud)
样本体html:
<script src="Scripts/jquery-1.4.1.min.js" type="text/javascript"></script>
<script type="text/javascript">
function getSession() {
$.ajax({
type: 'POST',
url: 'Default.aspx/GetSessionVariable',
data: '{ }',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
success: function (msg) {
document.getElementById("showSessionVariable").innerHTML = msg.d;
}
});
return false;
}
</script>
<form id="form1" runat="server">
<div id="showSessionVariable"></div>
<button onclick='return getSession()'>Get Session Variable</button>
</form>
Run Code Online (Sandbox Code Playgroud) 我知道,通过ASP.NET网站下的动态编译,文件后面的代码可以编译成程序集.运行IIS Express时,这些DLL的存储位置在哪里?它只在记忆中吗?我没有在bin文件夹或临时目录(C:\ Windows\Microsoft.NET\Framework [64]\v4.0.30319)中看到它们.通常我会在我发布时预编译它们时生成它们.但在这种情况下,我看不到它们.
我错过了什么吗?
谢谢.
更新:
我确实在C:\ Users\Administrator\AppData\Local\Temp\Temporary ASP.NET Files\root下看到了dll
所以我认为它存储在那里?这是Visual Studio 2012,.NET 4.5.
当我遇到这个时,我在ASP.NET中做了一些编码:
protected async void someButtonClickHandler(...)
{
if(await blah)
doSomething();
else
doSomethingElse();
}
Run Code Online (Sandbox Code Playgroud)
在提出这个问题后,我对如何async/ await工作有了更好的理解.但是,让我感到震惊的是,以上述方式使用async/ 是否安全await?
我的意思是在调用后调用await blah者继续执行.这意味着它可能会在await blah完成之前将响应呈现给客户端.这是正确的吗?如果是这种情况发生在doSomething()/ doSomethingElse().他们会被处决吗?如果它们被执行了,用户是否会看到其更改的效果?
在我的情况下,这些方法会改变显示给用户的一些数据,但我也想知道在一般情况下会发生什么.
我有一个ASP.NET 4.0 WebForms应用程序.我需要在Global.asax中访问HttpContext.Current.Session并设置AcquireRequestState事件(或事件后面的事件)中的值,并且我发现了一种特殊的行为.
假设我在IIS中有一个虚拟目录(在我的情况下是版本7)Foo.在那我Default.aspx作为主页.示例Global.asax文件如下:
<%@ Application Language="C#" %>
<script runat="server">
void Application_AcquireRequestState(object sender, EventArgs e)
{
HttpContext.Current.Session["key"] = "value";
}
</script>
Run Code Online (Sandbox Code Playgroud)
当我http://localhost/Foo/Default.aspx在浏览器中访问时,它运行正常.当我访问时,http://localhost/Foo/我得到一个NullReferenceException我在会话上设置值的地方.唯一的变化是浏览器中的URL.它们最终会访问同一页面,但框架的行为会有所不同,具体取决于URL是否只包含文件夹名称,还是包含aspx文件.
检查if (HttpContext.Current.Session != null)对我来说不是一个选项,因为我需要在会话中为每个请求设置一个值,这是不可协商的.
IIS中是否存在我缺少的配置设置,或者这是一个错误/被遗忘的功能?
另一个问题的答案暗示IIS不会为每种请求加载会话,例如样式表不需要会话.也许这种行为正在发生,因为IIS无法提前告诉该文件夹名称是否会导致执行aspx文件或者它是否会传递静态HTML文件?
更新:我甚至尝试重新排序IIS查找的默认文档,以便"default.aspx"位于列表的顶部,例如
我仍然遇到同样的问题.
更新:
事件处理程序只被触发一次,因为它导致了一个NullReferenceException.我已经做了一些额外的阅读,我知道ASP.NET会为每个请求触发这些事件,即使对于CSS或JavaScript文件也是如此.此外,没有为静态文件加载会话对象,因为没有访问会话的代码,因此无需加载对象.即便如此,第一个请求是对网页的请求,该请求将需要会话,并且会话为空.
@DmytroShevchenko问:
首先添加一个警卫检查,
if (HttpContext.Current.Session != null)以便没有NullReferenceException抛出.然后尝试看一下,也许这个事件将会第二次被解雇,会话可用.
修改后的代码
void Application_AcquireRequestState(object sender, EventArgs e)
{
if (HttpContext.Current.Session != null) …Run Code Online (Sandbox Code Playgroud) webforms ×10
asp.net ×8
c# ×3
html ×3
javascript ×2
.net ×1
asmx ×1
asp.net-mvc ×1
async-await ×1
iis ×1
jquery ×1
razor ×1
session ×1
vb.net ×1
webmethod ×1