C# 值没有从javascript传递到codebehind asp.net?
编辑:C# 值没有从javascript传递到codebehind asp.net?,c#,javascript,asp.net,c#-4.0,smtp,C#,Javascript,Asp.net,C# 4.0,Smtp,编辑: 我试过使用mail.Body=TextBox2.Text; mail.To.Add(TextBox1.Text); 我试过没有更新面板 代码在CSS弹出窗口中,这是主要问题 正如我所建议的,我使用了html按钮来调用javascript函数 public void LinkButton6_Click(object sender, EventArgs e) { try{ System.Net.Mail.MailMessage mail = new Syst
mail.Body=TextBox2.Text;
mail.To.Add(TextBox1.Text);
public void LinkButton6_Click(object sender, EventArgs e) {
try{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Subject = "";
mail.Body = HiddenField1.Value;
mail.To.Add(HiddenField2.Value);
////send the message
System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient();
System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("","");
//mySmtpClient.Port="25";
mySmtpClient.Host = "";
mySmtpClient.UseDefaultCredentials = false;
mySmtpClient.Credentials = myCredential;
mySmtpClient.Send(mail);
}
catch (Exception ex)
{
Response.Write(ex.ToString());
}
如何在Asp.net中将此值作为凭据传递
请帮助是否要直接从codebehind上的文本框中读取值
function btn_click() {
var email = document.getElementById('HiddenField1').value;
var body = document.getElementById('HiddenField2').value;
}
您正在将电子邮件地址输入TextBox2,然后将其复制到HiddenField1,但在代码隐藏中读取地址的HiddenField2。类似地,您将邮件正文输入TextBox1,然后将其复制到HiddenField2,但随后在代码隐藏中读取HiddenField1(客户端上1和2之间的这种交换是不必要的混淆)。在测试隐藏字段中的值时,您是否用数据填充两个文本框?首先,我认为您应该删除隐藏字段和与之相关的任何内容(javascript函数)。重点关注问题的原因而不是解决方案,问题在于文本框值没有返回到服务器。当您最终让它使用隐藏字段时,问题可能仍然存在。尽管您已经发现隐藏字段与原始文本框存在相同的问题 隔离问题: 1) 这些值是否实际发布到服务器?(您可以使用浏览器内置开发工具或类似HttpWatch的插件来验证这一点,在最坏的情况下,您可以使用嗅探器) 2) 通过关闭ajax/updatepanel功能,确保updatepanel不会干扰。(您可以通过在ScriptManager(通常位于母版页)上将EnablePartialRendering设置为false来实现此目的)。虽然这不重要 3) 当您验证了正确的值实际上已发布到服务器时,请确保页面加载(或类似函数)中没有奇怪的逻辑覆盖在OnLoad之前处理的回发值。这可能是一些初始化,应该只在不是回发时运行 4) 确保处理回发变量时控件存在,否则回发值将被忽略。您注意到代码位于“CSS弹出窗口”中,请确保在处理回发变量时此弹出窗口存在(在控件集合中)
mail.Body = TextBox1.Text;
这应该对你有好处:)你为什么不在codebehind中简单地使用TextBox值呢?我尝试过它不起作用,所以尝试过使用同样的错误也会在这里发生,这是在UserControl中还是在你的代码示例中有其他不明显的东西?@jrummell是我认为可能导致错误的唯一控件提交时不存在的值将是
UpdatePanel
。然而,在这种情况下,OP似乎使用了一个链接来提交,但这不起作用。我也尝试过,我没有使用更新面板,我已经停止使用asp.net按钮,我使用的是提交按钮,而不是“var email=document.getElementById('HiddenField1')。value;var body=document.getElementById('HiddenField2')。value;'是否有办法将此传输到smtp处理
function btn_click() {
var email = document.getElementById('HiddenField1').value;
var body = document.getElementById('HiddenField2').value;
}
mail.Body = TextBox1.Text;
<script type="text/javascript">
function SendForm() {
var email = $get("TextBox2").value;
var message = $get("TextBox1").value;
PageMethods.SendForm(email, message,
OnSucceeded, OnFailed);
}
function OnSucceeded() {
// Dispaly "thank you."
$get("ContactFieldset").innerHTML = "<p>Thank you!</p>";
}
function OnFailed(error) {
// Alert user to the error.
alert(error.get_message());
}
</script>
[WebMethod]
public static void SendForm(string email, string message)
{
System.Net.Mail.MailMessage mail = new System.Net.Mail.MailMessage();
mail.Subject = "";
mail.From = new MailAddress("");
mail.Body = message;
mail.To.Add(email);
////send the message
System.Net.Mail.SmtpClient mySmtpClient = new System.Net.Mail.SmtpClient();
System.Net.NetworkCredential myCredential = new System.Net.NetworkCredential("","");
//mySmtpClient.Port="25";
mySmtpClient.Host = "";
mySmtpClient.UseDefaultCredentials = false;
mySmtpClient.Credentials = myCredential;
mySmtpClient.Send(mail);
if (string.IsNullOrEmpty(email))
{
throw new Exception("You must supply an email address.");
}
if (string.IsNullOrEmpty(message))
{
throw new Exception("Please provide a message to send.");
}
// If we get this far we know that they entered enough data, so
// here is where you would send the email or whatever you wanted
// to do :)
}