Как передать значения модели с предыдущей страницы в метод публикации новой страницы, используя ajax? - PullRequest
0 голосов
/ 17 декабря 2018

Home.cshtml

  @model Models.MyData 
    @using (Html.BeginForm("AddData", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))

    {
    }

HomeController.cs

 [HttpPost]
        public async Task<ActionResult> AddData(MyData mydata)
        {

            return View("AddDetails", mydata);
}

Я получаю значения здесь на mydata, теперь я хочу перенаправить на следующую страницу с такими же значениями модели длячто при загрузке страницы новой перенаправленной страницы я пишу ajax-вызов, но он проходит нулевую модель.

AddDetails.cshtml

@model Models.MyData 

<script>

var someRootPath = "@Url.Content("~")";

        $.ajax({
            url: someRootPath + 'Home/Process',
            data: $('#AddData').serialize(),


            type: "POST",            
        });
    }
  </script>

HomeController.cs

[HttpPost]        
    public async Task Progess(MyData mydata)
    {

Как получитьмодель mydata здесь с предыдущей страницы?Я хочу показать пользовательский интерфейс, поэтому сначала используйте return view вместо RedirectToAction

1 Ответ

0 голосов
/ 18 декабря 2018

https://dotnetfiddle.net/c7hAFy

Контроллер

namespace Testy20161006.Controllers
{
    public class MyData
    {
        public string NeoData { get; set; }
    }

    public class HomeController : Controller
    {
        [HttpPost]
        //adding generic ActionResult to Task type
        public async Task<ActionResult> Progess(MyData mydata)
        {
            return View();
        }

        [HttpPost]
        public async Task<ActionResult> AddData(MyData mydata)
        {
            return View("AddDetails", mydata);
        }

        public ActionResult Tut137()
        {
            MyData myData = new MyData { NeoData = "neoData" };
            return View(myData);
        }

Первая страница - Индекс или Tut137 в моем случае -

@model Testy20161006.Controllers.MyData 
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>Tut137</title>
</head>
<body>
    @using (Html.BeginForm("AddData", "Home", FormMethod.Post, new { enctype = "multipart/form-data" }))
    {
        @Html.TextBoxFor(r=>r.NeoData);
        <input id="theButton" type="submit" value="Go"  />
    }
</body>
</html>

AddDetails.cshtml

@model Testy20161006.Controllers.MyData
@{
    Layout = null;
}
<!DOCTYPE html>
<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>AddDetails</title>
    <script src="~/Scripts/jquery-1.12.4.min.js"></script>
    <script type="text/javascript">
        $(function () {
            var someRootPath = "@Url.Content("~")";
            $.ajax({
                //rename Process to Progess to match call to method called
                url: someRootPath + 'Home/Progess',
                data: $('#AddData').serialize(),
                type: "POST",
            });
        })
    </script>
</head>
<body>
    <div>
        @Html.TextBoxFor(r => r.NeoData, new { id = "AddData" })
    </div>
</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...