簡體   English   中英

重定向到ASP.NET MVC中的外部頁面的返回類型是什么?

[英]What is the return type to redirect to an external page in ASP.NET MVC?

這主要與我之前的問題有關,但與之不同。 我在代碼中集成了付款網關,並且有發布URL。 因此,單擊按鈕后,控件從我的視圖轉到控制器,在該視圖中,我調用方法來執行發布。

因此,我擔心的是我目前正在使用以下代碼將其發布到URL,但是提供程序尚未准備就緒,因此我無法進行測試,但是我想知道我是否在這里使用了正確的返回類型。

這會將我從控制器重定向到提供商的網站/頁面嗎?

正確的方法是什么?在某些地方,我只能從Javascript而不是從控制器進行。

身體能否說明一下,我過去幾天一直在為此苦苦掙扎?

public HttpWebResponse SendPostRequest(string data, string url)
{
    var datetime = DateTime.UtcNow;
    data = string.Format("ID*1100|Field01*19101|FirstName*james|LastName*MEZE|AmountDue*20000|CurrentTime*7/5/2016 4:25 PM);
    var requestPayload = Encrypt(data);
    url = "https://www.example.com/Account/SSO/Home";

    HttpWebRequest httpRequest = (HttpWebRequest) HttpWebRequest.Create(url);
    httpRequest.Method = "POST";
    httpRequest.ContentType = "text/plain";// "application/x-www-form-urlencoded";
    httpRequest.ContentLength = encryptedRequestPayload.Length;

    var streamWriter = new StreamWriter(httpRequest.GetRequestStream());
    streamWriter.Write(encryptedRequestPayload);
    streamWriter.Close();

    /*var response = (HttpWebResponse)httpRequest.GetResponse(); 
    var statusCode = response.StatusCode; 
    var description = response.StatusDescription;

    var sr = new StreamReader(response.GetResponseStream());
    var text = sr.ReadToEnd();*/

    return (HttpWebResponse) httpRequest.GetResponse();
}

返回HttpWebResponse只會顯示空白行System.Net.HttpWebResponse。 但是在響應中,我看到了XML消息,響應中說該服務已關閉,聯系管理員。 為什么我在網頁上看不到該消息? 請幫忙。

要重定向到外部網頁,您可以使用Redirect方法並傳遞url。

public ActionResult SendPostRequest(string data, string url)
{
    //do youre stuff

    return Redirect("https://www.example.com/Account/SSO/Home");
}

這僅適用於HTTP GET調用,因為當瀏覽器成為重定向結果時,瀏覽器會執行新的GET。

如果您想發布到另一個頁面並將結果頁面顯示給訪問者,我認為實現此目的的唯一可能方法是使用JavaScript。 為此,您可以返回一些帶有<script>標記的簡單html,該標記通過HTTP POST發送<form>

//$ is the C#6 syntax of string.Format
return Content($@"
    <form action='https://www.example.com/Account/SSO/Home' id='myForm' method='post'>
      <input type='hidden' name='value1' value='{value1}' />
      <input type='hidden' name='value2' value='{value2}' />
    </form>
    <script>
      document.getElementById('myForm').submit(); //submit the form
    </script>");

我從這個答案中得到了一個想法

您似乎有兩個問題:

1)服務器沒有響應您想要的方式。 消息提示您可能必須與管理員聯系。 2)您沒有返回ASP.NET MVC期望的東西,因此框架調用的ToString()方法將僅顯示System.Net.HttpWebResponse

您雖然很接近。 您不應該返回從響應流中獲得的文本嗎?

您可以這樣寫:

return Content(text); // after uncommenting your code.

此答案將向您展示成功嘗試將數據發布到服務器並將響應傳遞給客戶端的嘗試。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM