How do I pass an HTML element's value to a C# code-behind method?

后端 未结 4 1114
暗喜
暗喜 2021-01-26 14:27

For example, right now I have my ASPX like so:

相关标签:
4条回答
  • 2021-01-26 14:33

    You should post value you want to send to the webserver into an html form.

    0 讨论(0)
  • 2021-01-26 14:37

    If you want to pass a value from client-side to code behind without posting back the entire page, you will need to use Ajax.

    Calling to a server-side method in ASP.Net Web Form is not as clean as ASP.Net Web API or MVC. You will need to use old WebMethod.

    For example,

    <%@ 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>
    

    Code Behind

    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));
            }
        }
    }
    
    0 讨论(0)
  • You can make it a server control by adding runat="server" and it will be available in your code behind file. OR if you don't prefer this then use Request.Form["Name"] in your code behind file. Here "Name" is the name you are giving to your textbox control.

    In your case the name is StartDate

    So try to access the value of textbox from the code behind using Request.Form["StartDate"]

    Read this article.. https://www.aspsnippets.com/Articles/Get-value-of-HTML-Input-TextBox-in-ASPNet-code-behind-using-C-and-VBNet.aspx

    0 讨论(0)
  • 2021-01-26 14:47

    this method GetCurrentDate running server side but this formObj.elements.item('someLabel').value running on client

    try this..

    <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");
        }
    

    for read value of input named as StartDate from server..

    string postValue =  Request.Form["StartDate"]
    
    0 讨论(0)
提交回复
热议问题