Вывод HTTP-кодов состояния через всплывающее окно - PullRequest
1 голос
/ 07 марта 2019

Я пытаюсь вывести небольшое всплывающее окно пользователю, сообщающее, что команда 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 голосов
/ 07 марта 2019

Каждая функция контроллера get или post должна возвращать модель представления, которая может использоваться представлением для отображения того, что имеет значение. Вместо того, чтобы использовать TempData, сделайте что-то вроде этого

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

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

   // fill out vm where appropriate

   return View(vm);
}
...