Использование кнопки HTML в MVC - PullRequest
1 голос
/ 20 июля 2010

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

Например, допустим, у меня есть текстовая область и кнопка отправки. Идея состоит в том, чтобы нажать кнопку отправки, и текст в текстовой области будет отправлен в базу данных. Очень простые вещи.

Спасибо за помощь!

Ответы [ 2 ]

4 голосов
/ 20 июля 2010

в aspx:

     <%Html.BeginForm("Hello","Home",FormMethod.Post);%> <!--Name of method, name of controller, formmethod -->
        <input type="text" id="userName" maxlength="50" name="userName"/>
        <input id="Submit1" type="submit" value="Say Hello!" />
     <%Html.EndForm();%>
     <h2><%= Html.Encode(TempData["Message"]) %></h2>

В контроллере (в данном примере HomeController):

public ViewResult Hello(string userName) //note this variable is exactly what is the name of text input on page
        {
            //simple example, take input and pass back out
            TempData["Message"] = "Hello, " + userName;
            return View("Index",TempData);
        }

РЕДАКТИРОВАТЬ: для ответа на дополнительный вопрос об обслуживании URL

Один из методов, позволяющих «оставаться на месте», пока ваш URL-адрес, состоит в «перегрузке» метода Index вашего контроллера, как показано ниже

[AcceptVerbs(HttpVerbs.Post)] //This is KEY <-----
        public ActionResult Index(string userName)
        {
            //simple example, take input and pass back out
            TempData["Message"] = "Hello, " + userName;
            return View("Index",TempData);
        }

Затем вваш Index.aspx меняет форму Html.Begin, как показано ниже, теперь вы просто указываете на действие по умолчанию

<%Html.BeginForm("Index","Home",FormMethod.Post);%> 

Поскольку вы отправляете на контроллер и не получаете (действие по умолчанию для индекса) версию, которая являетсянастройте AcceptVerb POST и примите строку userName, и ваш URL должен быть сохранен

0 голосов
/ 20 июля 2010

В HTML представления, область текста и кнопка отправки будут частью формы, а атрибут action этой формы будет указывать на '', и вы поместите деталь в тот же контроллер, который сгенерировал это представление, проверяет данные POST. Если есть данные POST, вы должны записать их в базу данных.

Форма будет выглядеть примерно так:

<form action='' method='post'>
    <textarea name="text"></textarea>
    <input type="submit" value="Submit"/>
</form>

В POST вы увидите переменную с ключом, который соответствует атрибуту name текстовой области (в данном случае text). Вы можете прочитать это оттуда.

При желании вы также можете изменить атрибут action в форме на URL-адрес, и в этом случае вы напишите часть, которая проверяет данные POST в контроллере, на который указывает этот URL-адрес.

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