从HTML输入中获取C#后端代码的值

7
我进行了一些研究,发现如何从输入HTML文本框中读取值。
这对我来说很有效,但有时它不起作用。
这是我的代码,输入的HTML返回null。
<input type="text" name="inpNickname" placeholder="Nickname" data-placement="right" data-toggle="tooltip" title="Nickname" id="txtNickname" runat="server"/>

<input type="text" name="inpPassword" placeholder="Password" data-placement="right" data-toggle="tooltip" title="Password" id="txtPassword" runat="server"/>

string Nickname = Request.Form["inpNickname"];
string Password = Request.Form["inpPassword"];

如果我将Request.Form []更改为ID,则仍然无法正常工作。

你尝试通过ID获取它了吗? - B-M
是的,那也不起作用。 - Swag
1
“不起作用”是什么意思?字符串保持为null吗? - Justin Morgan
5个回答

25

由于它在服务器上运行,因此...

txtNickname.ValuetxtPassword.Value 将为您提供所需内容。

当您指定 runat="server" 时,实际上是给您的代码后台类赋予一个属性。因此,您可以直接访问该属性及其属性。


当我尝试这个时,我无法在txtNickname和txtPassword之后输入“.Text”。 - Swag
请使用 txtNickname.Value。 - bluetoft
1
我建议使用ASP.NET控件(即<asp:TextBox.. />),这将使您的生活更轻松。 - Sam Hood
3
我同意到一定程度。如果你必须使用ASP.NET Web Forms,使用服务器控件是一个不错的选择。然而,我强烈建议使用更好的平台,比如MVC,以便让生活变得更容易 :) ...但这不是原来的问题。 - bluetoft
我同意Sam Hood和Bluetoft的观点,如果你想更接近HTML,则使用ASP.NET MVC,但我也同意用runat="server"来装饰HTML控件是在寻找麻烦,特别是对于那些维护你的代码的人,而且你还可以充分利用Visual Studio的Intellisense - Karl Anderson

5

为什么不使用服务器控件?

这里是TextBox(文本框)的参考链接。
<asp:TextBox ID="txtNickname" runat="server" />

代码后台:

var nickName = txtNickname.Text;

4
string Nickname = txtNickname.Text;
string Password = txtPassword.Text;

他们正在服务器上运行,请参见此处


1

使用name="inpNickname"无效,只能使用ID,因此在这种情况下使用:txtNickname


0

标准方法:

前端:

 <asp:TextBox runat="server" id="testid"></asp:TextBox>

后端:

String test = testid.text;

通常我使用这些简单的服务器控件,但是对于复杂的表单和回传,事情并不总是那么简单... 我发现了另一种可以从后端获取客户端控件的绝佳方法,即使在代码后台中找不到该控件,例如使用thecontrol.text或thecontrol.value:
后端:
String test = Request.Form["ctl00$MainContent$TextboxControlsId"].ToString();

这将获取id为:TextboxControlsId的文本框的内容,该文本框在sitemaster之外定义。

如果您需要查找控件的ID(很可能它不会保留您在前端编写的相同ID),则可以通过使用以下方式循环遍历表单控件键:

foreach (string s in Request.Form.Keys ) { 
    Response.Write(s.ToString() + ":" + Request.Form[s] + ""); 
} 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接