虽然我不认为自己是一名网络程序员,但我已经做了大量的网络编程,所以我几乎不好意思问下面的代码有什么问题.ASP.NET必须缺少一些基本的东西.
我有两个页面,source.aspx和destination.aspx:
source.aspx - html:
<body>
<form id="form1" action="destination.aspx" method="post" runat="server">
<input id="Text1" type="text" />
<input id="Text2" type="text" />
<input id="Checkbox1" type="checkbox" />
<input id="Submit1" type="submit" value="submit" />
</form>
</body>
Run Code Online (Sandbox Code Playgroud)
destination.aspx - 代码背后:
protected void Page_Load(object sender, EventArgs e)
{
// Below variable gets assigned null.
string text1 = Request.Form["Text1"];
}
Run Code Online (Sandbox Code Playgroud)
当我提交source.aspx表单时,一旦它到达destination.aspx表单,FORM变量中就没有信息.我认为表单'runat ="server"'将确保我最终进入ASP.NET页面管道,实际上我可以单步执行此代码.除了viewstate之外没有POSTed表单变量,并且PARAMs集合也没有与控制数据相对应的任何内容,甚至没有与装饰控件名称相对应的变量.问题是,正在发生的事情是让我的POSTed变量"消失",至少到目标页面?
我不是在寻找替代方法如何使这项工作(即使用runat ="server"等控制服务器控件).我可以解决这个问题.我想要确定的是"ASP.NET的内容是什么让我的控件看起来不会被目标页面接收.谢谢 - 我认为我非常了解HTTP,但是我似乎没有看到ASP.NET的一点点礼貌.
我正在尝试编写一个lambda表达式来查看一个对象数组('fields'),这些对象可能包含也可能没有特定的项目.我想检索它们存在的值; 如果数组中没有字段的代码为"SomeCode",则没有值可以检索.我很好奇是否有更简洁的方法来编写下面的内容,因为我需要为很多字段执行此操作并且想要完成两次"FirstOrDefault"调用.
if (fields.FirstOrDefault(x => x.Code == "SomeCode") != null)
{
obj.CodeValue = fields.FirstOrDefault(x => x.Code == "SomeCode").Value;
}
Run Code Online (Sandbox Code Playgroud)
编辑:感谢您以"仅限Lambda"的方式做到这一点的任何见解; 我想提高我在这方面的技能,并认为有一些东西比调用它两次或只是将它分配给一个临时对象更干净.