Member 13909869 Ответов: 2

Как мы можем перенаправить на одно и то же представление без потери данных


У меня есть два текстовых поля на одном представлении в проекте при первой загрузке мы предоставляем значение на текстовом поле из контроллера с помощью model.name его показывают в поле зрения, чем я нажимаю на кнопку другого текстового поля show other value model.age, но model.name значение удалить я хочу оба значения в текстовом поле

Что я уже пробовал:

<pre>namespace WebApplication2.Controllers
{
    public class HomeController : Controller
    {
        // GET: Home

        Class1 cs = new Class1();
        public ActionResult Index()
        {
            if(TempData["A"]==null)
            {
                
                cs.name = "hi";
                TempData["A"] = "B";
            }
            
            return View(cs);
        }

        public ActionResult A()
        {
           cs.age ="hello";
            //return RedirectToAction("Index",cs);
            return View("Index", cs);

        }


        }
}

F-ES Sitecore

Вы должны убедиться, что кнопка, которую вы нажимаете, отправляет форму, и вы добавляете модель к действию. Так что если ваша кнопка подчиняется "а";

public ActionResult A(модель Class1)

Если вы правильно привязали свое текстовое поле к Model.name в представлении тогда "модель" В "а" также будет иметь эти данные. Не видя вашего взгляда, невозможно ответить.

Вам действительно нужно получить лучшее базовое понимание MVC, хотя я предлагаю вам пройти через книгу или некоторые учебные пособия, такие как "музыкальный магазин MVC".

2 Ответов

Рейтинг:
2

EasyPedia

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

Home Controller

    public class HomeController : Controller
    {       
        Class1 cs = new Class1();
        [HttpGet]
        public ActionResult Index(Class1 model)
        {
            cs.name = "hi";
            if (TempData["A"] == null)
            {
                TempData["A"] = "B";
            }

            return View(cs);
        }
       
        public ActionResult A(Class1 model)
        {
            model.age = "hello";
            return RedirectToAction("Index", model);
            //return View("Index", cs);

        }      
    }

Index View

    <pre>@using Articles.Models
    @model Class1
    @{
       Layout = null;
    }

    <!DOCTYPE html>
 
    <html>
    <head>
        <meta name="viewport" content="width=device-width" />
        <title>Index</title>
    </head>
    <body>
        @using (Html.BeginForm("A", "Home", FormMethod.Post))
        {
            <div>
                @Html.LabelFor(model => model.name)   
                @Html.EditorFor(model => model.name)
            
                <br />
                @Html.LabelFor(model => model.age)     
                @Html.EditorFor(model => model.age)
            </div>
            <div class="options">
               <input type="submit" name="save" class="btn btn-success" value="Save" />
            </div>
        }
    </body>
    </html>


Рейтинг:
1

KarstenK

Вам нужно включить в модель пользовательского интерфейса. Оба конца пользовательского интерфейса могут управлять моделью и извлекать из нее данные для ее отображения.

=> создайте класс модели данных, обработайте его изменения и отобразите в пользовательском интерфейсе