【发布时间】:2016-06-03 08:48:53
【问题描述】:
我正在开发一个非常简单的数据输入应用程序(在引导程序中),使用 ASP.net 和 VB.Net 作为 Visual Studio 2012 web 中的代码。
假设我有以下 html 来获取名字:
<form id="form1" runat="server">
<div style="padding:20px">
<div class="form-group">
<label for="firstname">Firstname</label>
<input type="text" class="form-control" id="firstname" name="firstname" placeholder="" style="max-width:450px" maxlength="60" />
<small class="text-muted">Enter your first name.</small>
</div>
<button runat="server" type="submit" class="btn btn-primary" onserverclick="btnSubmit_ServerClick" >Submit</button>
</div>
</form>
以及后面对应的代码来处理它的值:
Protected Sub btnSubmit_ServerClick(sender As Object, e As EventArgs)
Dim fname As String = Request.Form("firstname").ToString
End Sub
假设我不想在我的 html 名字字段中使用 runat="server"。
我看到Request.Form("firstname").ToString 仅在我设置标签name="firstname" 时才有效。如果我只设置了id 标签(而不是name 标签),它不会考虑它;在我的情况下,如果我的服务器端只有 <input type="text" class="form-control" id="firstname" placeholder="" style="max-width:450px" maxlength="60" /> Request.Form("firstname"),则返回 NULL。
我也尝试Request.Form,但没有成功。我看到集合 NameValueCollection 由仅设置了 name 标记的组件填充。
我的问题是,是否可以更改我的服务器代码以使用他们只设置了 ID 的 html 组件?
【问题讨论】:
-
我建议使用server controls(文本框、按钮等),以便您可以通过强类型访问它们的值。
-
不,在请求中你只会得到名称值对,id 不是发送到服务器的东西
-
@UweKeim 感谢您的建议。我同意,但我的问题只是出于知识目的,假设我们现有的代码具有数百个以这种方式设置的 html 字段。
-
维护遗留代码的乐趣……
-
@UweKeim 正是我的朋友...:s!
标签: html asp.net vb.net namevaluecollection