`MVC` Как изменить значение фрагмента текста в представлении - PullRequest
0 голосов
/ 04 апреля 2019

Я представляю кого-то, кто работал с Webforms.

Теперь я понимаю отношения Controllers вытягивания из Models представления в Views.

Я сейчас играюсь с MVC.

В Webforms у нас был файл с выделенным кодом для внешнего интерфейса .aspx и .aspx.cs.

Скажем, для базового шаблона нового MVC проекта у нас есть HomeController и Index.cshtml.

Вот набросок сценария в моей голове того, что я пытаюсь сделать:

На Index.cshtml я вижу, что есть ViewBag (я использую это в качестве примера, я знаю, что есть другие (несколько) способов сделать это лучше, чем раздувание ViewBag), установив заголовок на «Домашняя страница».

Теперь для Index.cshtml View Controller Action для этого:

HomeController.cs> Index ()

public ActionResult Index()
{
    ViewBag.PersonalName = "Bob";
    return View();
}

(я добавил строку PersonalName в этот метод).

Если я хочу получить доступ к значению, я мог бы сделать что-то подобное на внешнем интерфейсе, чтобы вытащить его:

<div>@ViewBag.PersonalName</div>

Теперь это то, где Webforms, возможно, развращает меня здесь относительно моего мыслительного процесса.

По-моему, я думаю о обработчиках событий для OnButtonClick's однако, очевидно, это не то, как мы это делаем больше, а концепция того, чего я пытаюсь достичь, позвольте мне уточнить ...

Скажем, у меня есть кнопка на Index.cshtml, которая при нажатии устанавливает текст сверху (внутри тега Div) в этом вопросе на что-то, введенное в TextArea из Index.cshtml View.

Как бы передать введенный пользователем Text из этого TextArea и отобразить его на том же View?

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

Спасибо.

РЕДАКТИРОВАТЬ 1: я не хочу использовать AJAX

РЕДАКТИРОВАТЬ 2: Я хотел бы, чтобы это было сделано на стороне сервера, если это вообще возможно.

Ответы [ 2 ]

1 голос
/ 05 апреля 2019

вы можете сделать это

@using(Html.BeginForm())
{
  <input type="text" name="name" />
  <input type="submit" />
}

и в вашем действии HttpPost используйте параметр, имя которого совпадает с именем текстового поля.

[HttpPost]
public ActionResult Report(string name)
{

   //Do server validations here

   //set posted value in view bag
    ViewBag.PersonalName = name;
    return View("Index");
 }
0 голосов
/ 04 апреля 2019

У вас есть два варианта:
1) Превратите TextArea в тег формы, затем в sumbit попытайтесь получить значение и связать свой вид с этим значением, используя ViewBag или ViewData
2) Используйте javascript, чтобы получить значение, затем связать div со значением (это решение лучше, чем отправка запроса в контроллер)

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