Вопрос

Я визуализирую ViewUserControl (файл .ascx) в представлении:

<% Html.RenderPartial("Comments", Model.Comments); %>

Этот ViewUserControl показывает связанные комментарии к записи.Я бы хотел, чтобы этот элемент управления также отображал форму, чтобы пользователи моего приложения могли внести свой вклад.

Как бы вы добавили форму в ViewUserControl и обработали ее обратную отправку?

Это было полезно?

Решение

Просто добавьте туда форму так же, как вы бы делали на любой странице.В MVC форма не выполняет обратную отправку как таковую - она просто отправляет себя и свое содержимое (элементы управления вводом) через HTTP Post на URL.

Просто создайте действие в вашем контроллере (и, следовательно, URL-адрес), которое форма опубликует, и выполняйте любые действия, которые там требуются...

Другие советы

Нет обратной отправки, как в стандарте asp.net может быть только тег формы, который отправляет данные на некоторый URL (контроллер / действие).
Внутри вашего частичного пользовательского контроля напишите:

<form action="controller/actionname" method="post">
<input type="text" name="inputText" />
<input type="submit" value="Post data to server" />
</form>

В MVC только тип ввода ="submit" запускает отправку формы.В стандартных ASP.NET веб-формах у вас может быть много Linkbuttons, кнопок, ...но под прикрытием все они запускают этот простой щелчок по типу ввода ="отправить" через событие javascript.Одна форма может отправлять данные только на один URL (контроллер / действие), но это может быть изменено с помощью javascript (как мы можем видеть в html-источнике 'old' asp.net webforms).

затем в контроллере вы можете обрабатывать данные post:

[AcceptVerb(HttpVerb.Post)] // optionally 
public ActionResult ActionName(string inputText) ...

Как уже отвечали другие, вы просто создаете форму и обрабатываете ее отправку с помощью ActionResult .

Например, если ваша форма (которая может быть отображена в любом месте вашего сайта) отправлялась в http://www.yoururl.com/home/save, вы бы создали метод ActionResult с именем save на домашнем контроллере для обработки отправки (вероятно, метод post / get).

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top