javascript - 从JS发送参数到asp.net

标签 javascript c# asp.net office-interop

我正在尝试将参数列表从 JS 发送到 asp.net 文件,但该文件未正确接收参数。有时我会收到“未定义”消息。 这是我的代码:

JavaScript

<script type="text/javascript">

$(document).on("click", "[id*=lnkView]", function () {
    $("#nome").html($(this).closest("tr").find("td.sDisplayName").text());
    $("#Product").html($(this).closest("tr").find(".Produto").text());
    $("#IP").html($(this).closest("tr").find("td.sNetworkAddress").text());
    $("#DC").html($(this).closest("tr").find("td.dc").text());
    $("#comentario").html($(this).closest("tr").find("td.sComment").text());
    $("#inicio").html($(this).closest("tr").find("td.inicio").text());
    $("#mensagem").html($(this).closest("tr").find(".mensagem").text());
    $("#monitor").html($(this).closest("tr").find("td.sMonitorTypeName").text());

    $("#dialog").dialog({
        width: 1000,
        title: "Detalhes para TP",
        buttons: {
            var width = 150;
            var height = 250;
            var left = 99;
            var top = 99;

            var janeleira = window.open("outlookPrimeiro.aspx?" + FIRST VALUE FROM THE FUNCTION ABOVE , 'janela', 'width=' + width + ', height=' + height + ', top=' + top + ', left=' + left + ', scrollbars=yes, status=no, toolbar=no, location=no, directories=no, menubar=no, resizable=no, fullscreen=no, setTimeout=1000');
            //window.open("outlookPrimeiro.aspx");
            //janeleira.onload = function () { janeleira.setTimeout('janeleira.close()', 1000); }
            //setTimeout(function () { janeleira(); }, 1);
        },

        ok: function () {
            $(this).dialog('close');
        }
    },
    modal: true
    });

    return false;
});

function blinker() {
    $('.blink').fadeOut(500);
    $('.blink').fadeIn(500);
}

setInterval(blinker, 1000); //Runs every second

ASP.NET

using System;
using System.Text;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
//NECESSÁRIO PARA USAR MARSHALL
using System.Runtime.InteropServices;

//NECESSARIO PARA USAR O OUTLOOK
using aqueleLance = Microsoft.Office.Interop.Outlook;
using OutlookApp = Microsoft.Office.Interop.Outlook.Application;
using testeUsingPrimeiro = Microsoft.Office.Interop.Outlook._AutoFormatRule;
using testeUsingSegundo = Microsoft.Office.Interop.Outlook._AutoFormatRules;
using testeUsingTerceiro = Microsoft.Office.Interop.Outlook.AutoFormatRule;
using testeUsingQuarto = Microsoft.Office.Interop.Outlook.AutoFormatRules;

public partial class outlookPrimeiro : System.Web.UI.Page
{
    protected void Page_Load(object sender, EventArgs e)
    {
        String nomeDevice = null;
        if (Request.QueryString != null)
        {
            // Seta banco dados 

            nomeDevice = Request.QueryString.ToString();
        }

        //DEFINICICOES DE DADOS DO E-MAIL A SER ENVIADO
        String paraEmail = "para@email.com.br";
        String copiaEmail = "mateus.pereira@linx.com.br";
        //String copiaOculta = "";
        String assuntoEmail = "Using Outlook 2013";
        String corpo = "<html><body><div style='width:95%;text-align: center;background-color: black'><table style='width: 100%;text-align: center'><tr style='background-color:#5B2E90'><td style='color: white'>Prioridade</td><td style='color: white'>Acionamento</td><td style='color: white'>KBN</td><td style='color: white'>Device</td><td style='color: white'>IP</td><td style='color: white'>DC</td><td style='color: white'>WUG</td><td style='color: white'>Diretorio</td><td style='color: white'>Monitor</td><td style='color: white'>Comentario</td><td style='color: white'>Tempo Down</td><td style='color: white'>Inicio</td><td style='color: white'>TP</td></tr><tr><td style='color: orange'>Prioridade</td><td style='color: orange'>Acionamento</td><td style='color: orange'>KBN</td><td style='color: orange'>"+ nomeDevice + "</td><td style='color: orange'>IP</td><td style='color: orange'>DC</td><td style='color: orange'>WUG</td><td style='color: orange'>Diretorio</td><td style='color: orange'>Monitor</td><td style='color: orange'>Comentario</td><td style='color: orange'>Tempo Down</td><td style='color: orange'>Inicio</td><td style='color: orange'>TP</td></tr></table></div></body></html>";

        //banco(?)
        //string host = "127.0.0.1\SQLEXPRESSNOC";
        //string usuario = "NOME DO USUÁRIO";
        //string senha = "SENHA DO USUARIO";
        //string banco = "NOME DO USUARIO";

        //CRIA NOVO APP USANDO Microsoft.Office.Interop.Outlook.Application
        OutlookApp appDoOutlook = new OutlookApp();

        //CRIA E-MAIL
        aqueleLance.MailItem itemDoMail = appDoOutlook.CreateItem(aqueleLance.OlItemType.olMailItem) as aqueleLance.MailItem;

        //QUAL CONTA VAI ENVIAR?  NECESSÁRIO TER A CONTA NA MÁQUINA
        string nomeDaConta = "para@email.com.br";

        //CRIA SESSÃO
        aqueleLance.NameSpace sessao = itemDoMail.Session;

        //PEGA CONTAS PRESENTES NA MÁQUINA
        aqueleLance.Accounts contaAccounts = sessao.Accounts;

        //FOR 1 ATÉ FINAL DO NÚMERO DE CONTAS
        for (int i = 1; i <= contaAccounts.Count; i++)
        {
            //aqueleLance.Account contaAccount RECEBE O VALOR DO FOR
            aqueleLance.Account contaAccount = contaAccounts[i];

            //SE A CONTA EXISTE, ELE VAI ENVIAR
            //(COMPARAÇÃO FEITA EM LOWER CASE
            if (contaAccount.DisplayName.ToLower() == nomeDaConta.ToLower())
            {
                //COMANDO PARA ENVIAR USANDO A CONTA XXXXX
                itemDoMail.SendUsingAccount = contaAccount;

                //LIBERA VARIAVEL
                Marshal.ReleaseComObject(contaAccount);

                //PARA O COMANDO
                break;
            }
        }

        //PARA QUEM ENVIA O E-MAIL
        itemDoMail.To = paraEmail;

        //ENVIAR COM COPIA PARA
        itemDoMail.CC = copiaEmail;

        //COPIA OCULTA
        //itemDoMail.BCC = copiaOculta;

        //ASSUNTO DO EMAIL
        itemDoMail.Subject = assuntoEmail;

        //CORPO DO EMAIL EM HTML
        itemDoMail.HTMLBody = corpo;
        //"<html><body>Enviado pelo <strong>Outlook</strong> 2013<br/> Teste do envio com CC e BCC.<br/><br/></body></html>"
        //IMPORTANCIA DO EMAIL
        itemDoMail.Importance = aqueleLance.OlImportance.olImportanceHigh;

        //ENVIA O EMAIL
        //NÃO É POSSÍVEL VER ANTES DE ENVIAR SEM HABILITAR O DISPLAY ABAIXO
        //itemDoMail.Send();

        //HABILITE ISSO PARA VER A MENSAGEM ANTES DE ENVIAR
        //PRECISA TIRAR O SEND ACIMA
        itemDoMail.Display(false);

        //LIBERA CONTAS
        Marshal.ReleaseComObject(contaAccounts);

        //LIBERA SESSÃO
        Marshal.ReleaseComObject(sessao);
    }
}

最佳答案

您发布的变量应该分配给一个参数。您的查询字符串似乎不以变量名开头。

Request.QueryString 是您可以发布的变量的集合

请求这样的页面:

window.open("outlookPrimeiro.aspx?variablename=" + value);

连续变量应添加&符号:

window.open("outlookPrimeiro.aspx?variablename=" + value + "&variablename2= " + value2);

在服务器端,您可以像这样读取变量:

string variable = Request.QueryString["variablename"]

关于javascript - 从JS发送参数到asp.net,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36153264/

相关文章:

c# - 隐藏函数

javascript - jqGrid - 在 IE 中产生 SCRIPT5007 错误,但在本地主机上工作

javascript - 为什么开发人员偶尔会在 "SharedArrayBuffer" "Atomics"属性中添加 ".eslintrc.json"和 "globals"?

JavaScript 无限滚动 + 延迟加载 - 如何确定 HTTP 请求的优先级(它正在占用可用连接)?

c# - 创建要在 Windows Azure 控制服务中使用的自定义身份提供程序

c# - 如何将 C# 中的图像调整为特定的硬盘大小?

.net - 计算 ASP.net/c# 中的 session 数

asp.net - 电子邮件会进入垃圾邮件而不是收件箱

javascript - Kendo Treeview 复选框与选定节点一起选中

JavaScript 数学到 PHP 页面 ID