例如,现在我的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#页面?任何有关这方面的帮助将不胜感激。
答案 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 。
例如,
<%@ 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;]
从后面的代码中访问文本框的值答案 3 :(得分:0)
您应该将要发送到网络服务器的值发布为html表单。