通过弹出窗口输出HTTP状态代码

时间:2019-03-06 21:10:53

标签: c# asp.net asp.net-mvc-4

我正在尝试向用户输出一个类似于弹出窗口的小窗口,说是否成功地接受了restful命令(并显示Http代码)。

我真的在寻找有关如何在ASP.NET MVC中正确执行此操作的方向。

控制器功能

 public void ExportJira()
    {

        string postUrl = "https://somewebsite.org/rest/api/2/issue";
        var httpWebRequest = (HttpWebRequest)WebRequest.Create(postUrl);
        httpWebRequest.ContentType = "application/json";
        httpWebRequest.Method = "POST";
        //Using Service Account for Demo Jira Instance
        httpWebRequest.Headers["Authorization"] = "Basic " + Convert.ToBase64String(Encoding.Default.GetBytes("FakeAccount:fakePw"));

        using (var streamWriter = new StreamWriter(httpWebRequest.GetRequestStream()))
        {
            string json = @"{""fields"":{""project"":{""key"": ""SDR""},""summary"": ""This is SDR Web App"",""issuetype"" : {""id"":""3""}}}";

            streamWriter.Write(json);
            streamWriter.Flush();
            streamWriter.Close();
            HttpWebResponse httpResponse = null;
            try
            {
                httpResponse = (HttpWebResponse)httpWebRequest.GetResponse();
                using (var streamReader = new StreamReader(httpResponse.GetResponseStream()))
                {
                    var result = streamReader.ReadToEnd();
                    System.Diagnostics.Debug.WriteLine("Errorcode: {0}", (int)httpResponse.StatusCode);
                    System.Diagnostics.Debug.WriteLine("Support Headers: \n" + httpResponse.SupportsHeaders + "\n");
                    System.Diagnostics.Debug.WriteLine("Headers: \n" + httpResponse.Headers + "\n");
                    TempData["msg"] = "<script>alert('Success!" + (int)httpResponse.StatusCode + "');</script>";
                }
            }
            catch (WebException e)
            {
                if (e.Status == WebExceptionStatus.ProtocolError)
                {
                    httpResponse = (HttpWebResponse)e.Response;
                    TempData["msg"] = "<script>alert('Failed!" + (int)httpResponse.StatusCode + "');</script>";
                }
                else
                {
                    TempData["msg"] = "<script>alert('Failed!" + (int)httpResponse.StatusCode + "');</script>";
                }
            }
            finally
            {
                if (httpResponse != null)
                {
                    httpResponse.Close();
                }
            }

        }
    }

查看代码

 @Html.ActionLink("Export to Jira", "ExportJira", null, new { id = "myLink" })
@Html.Raw(TempData["msg"])

1 个答案:

答案 0 :(得分:0)

每个getpost控制器函数都应返回一个视图模型,该视图模型可用于显示任何相关内容。而不是使用TempData,要做类似的事情

class ExportJiraViewModel
{
   public string Message {get;set;}
}

public IActionResult ExportJira()
{
   var vm = new ExportJiraViewModel(); 

   // fill out vm where appropriate

   return View(vm);
}