会asp刚学.NET问题之提交数据

ER_JIN_ZHI 2011-12-21 11:59:08

用户在表单里输入完信息后 点击提交到后台数据库

ASP提交数据给后台获取的方法很简单直接request就可以获得了

.NET怎么获得的?看了个视频是 在 GridView 中列出来的内容修改起来真复杂,只是获取个表单参数就一大串,请问有哪些方法获取啊
...全文
86 12 打赏 收藏 转发到动态 举报
写回复
用AI写文章
12 条回复
切换为时间正序
请发表友善的回复…
发表回复
小河 2011-12-21
  • 打赏
  • 举报
回复
用服务器控件
然后后台用 服务器控件ID.Text或Value获取
dalmeeme 2011-12-21
  • 打赏
  • 举报
回复
获取url后面的参数值:Request.QueryString["参数名"]

获取表单元素的值:Request.Form["表单元素的name属性值"]
  • 打赏
  • 举报
回复
都是表单提交,有什么区别么?

Request.Params["控件name"]
likevs 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 8 楼 er_jin_zhi 的回复:]
顺便问好像获得的值也没有过滤,如何过滤的 防止注入啥的
[/Quote]


//你的这种要求,则要求你先理解GridView对象的另一个模板<EditItemTemplate>

//我下面举个例子
<asp:GridView ID="GV_HJ" runat="server" DataKeyNames="HotJobID,HotJobTitle">
<Columns>
<asp:TemplateField HeaderText="到期时间">
<ItemTemplate><%# Eval("EndDate","{0:d}")%></ItemTemplate>
<EditItemTemplate>
<asp:TextBox ID="TB_ED" runat="server" Text='<%# Eval("EndDate","{0:d}")%>'></asp:TextBox>
<asp:RequiredFieldValidator ID="RequiredFieldValidator3"
runat="server" ControlToValidate="TB_ED" Display="Dynamic"
ErrorMessage="时间是必须的!" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="TB_ED" Display="Dynamic" ErrorMessage="时间格式不对!"
Operator="DataTypeCheck" SetFocusOnError="True" Type="Date"></asp:CompareValidator>
</EditItemTemplate>
</asp:TemplateField>
</Columns>
</asp:GridView>


//我这里有这么一列 <asp:TemplateField HeaderText="到期时间">
//里面的这个模板<ItemTemplate>为普通显示模板,就是用户点击修改前的显示模板
//而<EditItemTemplate>模板,则是用户点击修改后显示的模板
//在编辑模板里我有这么一个控件<asp:TextBox ID="TB_ED" runat="server" Text='<%# Eval("EndDate","{0:d}")%>'></asp:TextBox>
用于给用户输入的,它后面跟着两个官方的验证控件<asp:RequiredFieldValidator ID="RequiredFieldValidator3"
runat="server" ControlToValidate="TB_ED" Display="Dynamic"
ErrorMessage="时间是必须的!" SetFocusOnError="True"></asp:RequiredFieldValidator>
<asp:CompareValidator ID="CompareValidator1" runat="server"
ControlToValidate="TB_ED" Display="Dynamic" ErrorMessage="时间格式不对!"
Operator="DataTypeCheck" SetFocusOnError="True" Type="Date"></asp:CompareValidator>
//至于这些控件怎么配置,这里不好说明,建议楼主看下书理解一下
配置后,只要
protected void GV_HJ_RowUpdating(object sender, GridViewUpdateEventArgs e)
{
if (!this.Page.IsValid) return;//这里,如果提交更新时,查检页面的IsValid属性,只要验证属性没通过,则直接退出操作
}



//感觉楼主还是先看看书,理解一下ASP.NET与ASP的执行方式的区别,单看视频教程,感觉不是很给力
likevs 2011-12-21
  • 打赏
  • 举报
回复
string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();
//如果你理解了我楼上所说的原理,相信这个你不难理解
//Rows是GridView1的行对象集合
//Rows[e.RowIndex]代表当前行对象,你可以理解为<tr></tr>
//而Cells又是Row对象的单元集合,Cells[0]代表当前行对象的第一个单元对象,你可以把Cell对象理解为<td></td>
//Cells[0].Controls[0] 单元格对象里的Controls控件属性集合,比如你一个<td></td>里包含有多个TextBox控件时,Controls[0]就是第一个控件,Controls[2]就是该单元格里的第二个控件
//然后强制转换后取相应的值

//其实使用string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();
方式的,一般是直接使用官方封装好的<asp:BoundField DataField="CompanyName" HeaderText="公司名称" />模板

//如果使用官方的另一种模板:
<asp:TemplateField HeaderText="选择">
<ItemTemplate>
<asp:CheckBox ID="CheckBox1" runat="server" />
</ItemTemplate>
</asp:TemplateField>
//像这样的模板,则在获取里面控件引用时,使用的是另一种方式:
bool hasCheck=((CheckBox)this.GridView1.Rows[e.RowIndex].FindControl("CheckBox1")).Checked
//这里我不解释了,希望楼主能看得懂,说得通俗一点就是在当前行对象中查找指定ID的控件
SomethingJack 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 9 楼 likevs 的回复:]

ASP.NET是一种高级脚本语言,在这种语言里,ASP里的HMTL元素被称做控件对象,也就是常说的class(类)

//就好比GridView控件,它本身就是一个类,你页面上拖放一个,页面生成器就会实例化一个此类的对象

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这里this对象,是……
[/Quote]
很详细了```
likevs 2011-12-21
  • 打赏
  • 举报
回复
ASP.NET是一种高级脚本语言,在这种语言里,ASP里的HMTL元素被称做控件对象,也就是常说的class(类)

//就好比GridView控件,它本身就是一个类,你页面上拖放一个,页面生成器就会实例化一个此类的对象

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这里this对象,是当前页面Page类对象的引用,而GridView1则是页面里的GridView实例化对象的引用
//DataKyes是GridView实例化对象的一个属性集合(官方说是主键集合),该属性集合由玩家自定义指定
//比如<asp:GridView ID="GridView1" runat="server" DataKeyNames="HotJobID,HotJobTitle"
//这里我给该主键集合指定了两个数据源字段 HotJobID和HotJobTitle

//e是producted void GridView1_RowUpdating(object sender,GridViewUpdateEventArgs e)
//事件中的参数,它也是一个类对象,如果把GridView生成的HTML想象为行与列组成的表格的话,那么e就相当于一行对象,可能我说成<tr></tr>你更容易理解
//e.RowIndex中的RowIndex则是e对象的一个属性,通过它我们可以提取e对象的当前行记录索引(e对象你可以假设为鼠标点击触发GridView1_RowUpdating事件的那一行记录对象<tr></tr>)
//DataKyes[e.RowIndex][1] 微软的约定,数组以0行0列为开头,所以,这个值就是:第e.RowIndex+1行,第2列的值,假如之前我设置了DataKeyNames="HotJobID,HotJobTitle",设置了两个字段,则就是当前行记录的HotJobTitle字段值,如果你想取得HotJobID字段,改为DataKyes[e.RowIndex][0]

string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
//这时候你再看这语句,应该了解它取得的是什么值了吧
ER_JIN_ZHI 2011-12-21
  • 打赏
  • 举报
回复
顺便问好像获得的值也没有过滤,如何过滤的 防止注入啥的
ER_JIN_ZHI 2011-12-21
  • 打赏
  • 举报
回复
使用GridView 列出来数据后点编辑教程上用下面这句获取到了更改之前的文本框中的值
string CompanyName=this.GridView1.DataKyes[e.RowIndex][1].ToString();
然后用的
string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();

整个代码是这样的
producted void GridView1_RowUpdating(object sender,GridViewUpdateEventArgs e)
{
string CompanyName=(TextBox)this.GridView1.Rows[e.RowIndex].Cells[0].Controls[0].Text.ToString();
}

就这样获取吗?
没有其他什么方法吗?
lht1111 2011-12-21
  • 打赏
  • 举报
回复
zhongweng 2011-12-21
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 dalmeeme 的回复:]
获取url后面的参数值:Request.QueryString["参数名"]

获取表单元素的值:Request.Form["表单元素的name属性值"]
[/Quote]
+

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧