asp. net mvc. Отправка данных через Get (форма) и возвращение успеха в метке? (Как отправить и вернуть данные в том же представлении) - PullRequest
2 голосов
/ 08 марта 2020

Я изо всех сил пытаюсь узнать, как. net mvc работает. Я пытался сделать что-то вроде проверки анаграммы, но перед этим я делаю ввод и отправляю через GET (форму) на контроллер, и хочу проверить слово, если оно совпадает с другим (например, word1 == word1). и если это правда, я хочу отправить обратно к представлению 'success' в виде строки, которая будет записана в метке. Итак, у меня есть вопрос. Сначала я знаю, как отправлять данные через get, и до сих пор я проверял, равно ли слово чему-либо, и если это правда, то я перенаправлял на индекс. Что я не знаю, если как я могу отправить этот «успех» обратно в то же представление (без ajax, если это возможно) и записать его в метку, чтобы я ввел текст, и если он равен моему, то он скажет Успех в контроллере:

       {
           if ( word == "word1")
           {
               //return HttpNotFound();
               return RedirectToAction("Index");

           }
           return View();
       }

представление:

@{
    ViewBag.Title = "CheckAnagram";
    Layout = "~/Views/Shared/_Layout.cshtml";
}

<h2>CheckAnagram</h2>




@using (Html.BeginForm("CheckAnagram", "Anagrams", FormMethod.Get, new { @class = "navbar-form navbar-left" }))
{
    <div class="form-group">
        @Html.TextBox("word", null, new { @class = "form-control", @placeholder = "Check for anagrams" })
    </div>
    <button type="submit" class="btn btn-default">Submit</button>
}

Я знаю, что могу отправить модель для просмотра, но затем, когда я перезагружу страницу, она отправит ее снова, поэтому я не могу понять, как заставить это работать правильно, как это нормально делать?

1 Ответ

0 голосов
/ 08 марта 2020

Вы можете использовать TempData для передачи данных модели в запрос на перенаправление. Вы можете передавать простые типы, такие как string, int, Guid et c. Если вы хотите передать объект сложного типа через TempData, вы можете сериализовать ваш объект в строку и передать его. В вашем сценарии вы можете сделать это:

{
 if ( word == "word1")
 { 
  TempData["myresult"] = "Word match";
  //return HttpNotFound();
  return RedirectToAction("Index");
 }
 return View();
}

И ваш метод Index будет выглядеть следующим образом:

public ActionResult Index()
{
    if (TempData["myresult"] !=null)
    {
        var myresult= TempData["myresult"];
        ViewBag.myresult=myresult;
    }
    return View();
}

А в представлении Index вы можете просто получить ViewBag значение для отображения.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...