Лучший способ вернуть строку из HTTPHandler на страницу, которая помещает этот файл .ashx - PullRequest
2 голосов
/ 29 июля 2009

У меня есть ASP.Net HTTPHandler, который отправляется с веб-страницы ColdFusion, форма которой выглядит примерно так:

<form name="sendToHandler" action="http://johnxp/FileServiceDemo2005/UploadHandler.ashx" method="post">
<input type="hidden" name="b64fileName" value="fileservice.asmx.xml" />
<input type="hidden" name="strDocument" value="Document" />
<input type="submit" name="submitbtn"  value="Submit" />

Каков наилучший способ для этого .Net Handler вернуть строку на страницу POSTing ColdFusion?

РЕДАКТИРОВАТЬ обновление 14 августа 2009 г .:

Решение, которое я нашел в своем файле .ashx, включает сохранение URL-адреса файла .cfm, который отправил мой обработчик, и добавление строки запроса с результирующей строкой (-ями), которые я хочу передать обратно в ColdFusion. Мой коллега по CF использует наличие или отсутствие этих данных строки запроса для соответствующего форматирования веб-страницы .cfm:

public void ProcessRequest(HttpContext context)
    {
        string returnURL = context.Request.ServerVariables["HTTP_REFERER"];  // posting CFM page
        string message = UploadFile(context);    // handles all the work of uploading a file
        StringBuilder msgReturn = new StringBuilder(returnURL);
        msgReturn.Append("?n=");
        msgReturn.Append(HttpUtility.UrlEncode(TRIMrecNumAssigned));
        msgReturn.Append("&m=");  // this is just a msg with performance data about the upload operation (elapsed time, size of file, etc.)
        msgReturn.Append(HttpUtility.UrlEncode(message));
        context.Response.Redirect(msgReturn.ToString());
    }

Ответы [ 3 ]

11 голосов
/ 29 июля 2009

Просто напишите строку непосредственно в объект ответа в вашем методе ProcessRequest.

public void ProcessRequest(System.Web.HttpContext context)
{
    context.Response.Write(mystring);
}
1 голос
/ 30 июля 2009

Вы можете сгенерировать JSON из своего обработчика HTTP и использовать jquery.post для отправки данных формы и получения результатов на странице ColdFusion.

0 голосов
/ 30 июля 2009

Если вы хотите, чтобы ColdFusion знал, что возвращается, то на самом деле есть два способа сделать это.

Первый - вернуть строку в форму (как предложено womp), а затем обработать ее из браузера, отправив дополнительную форму или каким-либо другим способом. Поскольку, похоже, что все значения в форме предоставляются вместо пользовательских, это не то, что я бы сделал.

Второй метод - для CF обрабатывать саму форму. Предполагая, что значения, передаваемые вашей формой, доступны для CF, вы можете использовать CFHTTP, чтобы «подделать» сообщение формы. CF будет возвращен результат напрямую, и вы можете обработать ответ оттуда.

...