如何将HTML元素的值传递给C#代码隐藏方法?

时间:2017-03-08 18:22:07

标签: c# html asp.net

例如,现在我的ASPX就像这样:

<form name="form" runat="server" onsubmit="validate(this)">
    <table width="100%" height="100%">
        <tr>
            <td class="label">
                Start Date:
            </td>
            <td>
                <input type="text" name="StartDate" value='<%=GetCurrentDate("- testParam")%>' maxlength="10" /> 
            </td>
        </tr>
    </table>
</form>

..和我的C#如下:

public static string GetCurrentDate(string str)
{
    return DateTime.Now.ToString("MM/dd/yyyy") + str;
}

这很好,输出“03/08/2017 - testParam”。但是,如果,例如,我不是像上面那样手动发送硬编码字符串,而是想从ASPX端传递一个HTML元素的值作为参数?像这样:

...
<tr>
    <td class="label">
        Start Date:
    </td>
    <td>
        <input type="text" name="StartDate" value="<%=GetCurrentDate(formObj.elements.item('someLabel').value)%>" maxlength="10" />
    </td>
</tr>
...

我需要做什么才能将我的ASPX页面上的“someLabel”元素的值传递到C#页面?任何有关这方面的帮助将不胜感激。

4 个答案:

答案 0 :(得分:1)

此方法GetCurrentDate正在运行服务器端,但此formObj.elements.item('someLabel').value在客户端上运行

试试这个..

<tr>
<td class="label">
    Start Date:
</td>
<td>
    <input type="text" name="StartDate" value='<%=GetCurrentDate()%>' maxlength="10" /> 
</td>

    public  string GetCurrentDate()
    {
        return DateTime.Now.ToString("MM/dd/yyyy");
    }

用于从服务器命名为StartDate的输入的读取值。

string postValue =  Request.Form["StartDate"]

答案 1 :(得分:1)

如果要将值从客户端传递到后面的代码而不回发整个页面,则需要使用Ajax。

在ASP.Net Web Form中调用服务器端方法并不像ASP.Net Web API或MVC那样干净。您需要使用旧的 WebMethod

例如,

enter image description here

<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="Default.aspx.cs" Inherits="DemoWebForm.Default" %>

<!DOCTYPE html>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
    <title></title>
</head>
<body>
    <form id="form1" runat="server">
        <button type="button" onclick="getData();">Get Data</button>
        <br/>
        <input type="text" name="StartDate" id="txtStartDate" maxlength="10" />
        <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
        <script type="text/javascript">
            function getData() {
                var data = {value: "test"};
                $.ajax({
                    type: "POST",
                    url: '<%= ResolveUrl("~/Default.aspx/GetCurrentDate") %>',
                    data: JSON.stringify(data),
                    contentType: "application/json",
                    success: function (msg) {
                        $("#txtStartDate").val(msg.d);
                    }
                });
            }
        </script>
    </form>
</body>
</html>

代码背后

using System;
using System.Web.Script.Serialization;

namespace DemoWebForm
{
    public partial class Default : System.Web.UI.Page
    {
        [System.Web.Services.WebMethod]
        public static string GetCurrentDate(string value)
        {
            return new JavaScriptSerializer().Serialize(
                string.Format("{0} - {1}", DateTime.Now, value));
        }
    }
}

答案 2 :(得分:1)

您可以通过添加runat =&#34; server&#34;使其成为服务器控件。它将在您的代码隐藏文件中提供。或者如果你不喜欢这个,那么在代码隐藏文件中使用Request.Form [&#34; Name&#34;]。这里&#34;姓名&#34;是您为文本框控件提供的名称。

在您的情况下,名称是StartDate

因此尝试使用Request.Form [&#34; StartDate&#34;]

从后面的代码中访问文本框的值

阅读本文.. https://www.aspsnippets.com/Articles/Get-value-of-HTML-Input-TextBox-in-ASPNet-code-behind-using-C-and-VBNet.aspx

答案 3 :(得分:0)

您应该将要发送到网络服务器的值发布为html表单。