Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера? / 9 сообщений из 9, страница 1 из 1
22.09.2011, 10:30:24
    #37451127
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
На View есть кнопка
< input type =" submit " value="Вход" />

Подскажите, как мне по нажатию на кнопку заставить cработать функцию в отображаемом контроллере?

Пока написал вот такую, но она не работает:

[HTTPRequest, ActionName = "Вход"]
public void LogOn(string login, string pwd)
{
int i;
i = 5;
}
...
Рейтинг: 0 / 0
22.09.2011, 10:54:48
    #37451189
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Жентос,

@using (Html.BeginForm("Action", "Controller"))
...
Рейтинг: 0 / 0
22.09.2011, 11:04:23
    #37451213
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Pavluha,спасибо. Буду возле компа -- попробую
...
Рейтинг: 0 / 0
22.09.2011, 14:53:09
    #37451761
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
PavluhaЖентос,
@using (Html.BeginForm("Action", "Controller"))
В общем, получилось. А как надо модифицировать контроллер и вызов BeginForm, чтобы параметр функции контроллера передать?
...
Рейтинг: 0 / 0
22.09.2011, 15:26:07
    #37451839
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Плюс, к предыдущему:
параметр функции должен задаваться в поле
<input type="text" name="login" />
...
Рейтинг: 0 / 0
22.09.2011, 16:23:57
    #37452004
Pavluha
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Жентос,

У вас будет что-то вроде этого

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
@using (Html.BeginForm("LogOn", "Account", FormMethod.Post, new { name = "LogOn" }))
{
<table>
							<tr>
								<td style="width:50%;">
					        @Html.TextBoxFor(model => Model.Login, new { style = "width:200px;", size = "25" })
					        @Html.ValidationMessageFor(model => Model.Login)
								</td>
 							</tr>
							<tr>
								<td style="width:50%;"><br />
									@Html.PasswordFor(model => Model.Password, new { style = "width:200px;", size = "25" })
									@Html.ValidationMessageFor(model => Model.Password)
								</td>
							</tr>
						</table>
<input type="submit" name="submit" value="LogIn" />
}

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class Member
{
	public string Login { get; set; }
	public string Password { get; set; }
}

[AcceptVerbs(HttpVerbs.Post)]
public ActionResult LogOn(Member model)
{
	if (ModelState.IsValid)
	{
		if (MembershipService.ValidateUser(model.Login, model.Password))
		{
			FormsService.SignIn(model.Login, false);
		}
		else
		{
			ModelState.AddModelError(string.Empty, "Error");
			return View("Login", model);
		}
	}
	else return View("Login", model);
}
...
Рейтинг: 0 / 0
22.09.2011, 17:29:56
    #37452164
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Pavluha, а что у вас выступает в качестве модели во View?

У меня примерно такая структура сайта:

models/Topic.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
public class Topic
    {
        public int ID {get; set;}

        [DisplayName("Название")]
        [StringLength(50)]
        [RequiredAttribute(ErrorMessage = "Укажите значение")]
        public string Title {get; set;}

        [DisplayName("Содержание")]
        [StringLength(1024)]
        [RequiredAttribute(ErrorMessage = "Укажите значение")]
        public string Body { get; set; }

        [DisplayName("Кол-во комментариев")]
        public int CommentsCount { get; set; }

        [DisplayName("Изменено")]
        public DateTime TimeLastUpdated { get; set; }
        public int AuthorID { get; set; }

        public virtual List<Comment> commentsList { get; set; }

    }

Controllers/HomeController.cs
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
public class HomeController : Controller
{
        private ContentStorage db = new ContentStorage();
        public ViewResult Index()
        {
            // Topics -- это public DbSet<Topic> Topics { get; set; }
            return View(db.Topics.ToList());
        }
}

а вот тут у меня логин/пароль
Views/Home/Index

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
@model IEnumerable<MvcSimpleBlog.Models.Topic>
...
<table width="95%" height="86" border="0">
          <tr>
            <td width="45%" valign = "bottom" >Учетная запись:</td>
            <td width="45%" valign = "bottom" >Пароль:</td>
            <td width="10%"></td>
          </tr>

          <tr>
            <td width="45%"><p> <input type="text" name="login" />  </p></td>
            <td width="45%"><p><input type="password" name="password" /></p></td>
            <td width="10%" align = "left"> 
                @using (Html.BeginForm("LogIn", "Home"))
                { 
                    <input type = "submit" value = "Вход" />
                }
            </td>
          </tr>

          <tr>
            <td width="45%" valign = "top" >@Html.ActionLink("Регистрация", "Register", "Account")</td>
          </tr>

        </table>

Таким образом, мой view не содержит членов login и password (это, попытка реализации авторизации с главной страницы, как в ЖЖ, например). Потому у меня возникает вопрос:
- то ли мне надо view перенастроить, что оно на главной странице на ContentStorage ссылалось (а то, в свою очередь, содержало таблицу users)
- то ли в контроллер добавить переменных, чтобы я мог из view вызвать поле EditorFor
- то ли во View их как-то надо по другому прописать.

Сам контроллер аккаунтов работающий...
...
Рейтинг: 0 / 0
22.09.2011, 17:37:10
    #37452177
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Т.е. сама мысль примерно такая: в контроллере HomeController создать функцию, которая будет собирать логин/пароль, передавать их котроллеру AccountController, тот будет производить валидацию и возвращать управление тому контроллеру, откуда совершалась авторизация. Управление в функцию уже передается, дело за параметрами

Я не исключаю, что я залез в дебри и все делаю не так. Потому, в принципе, и тему завел
...
Рейтинг: 0 / 0
23.09.2011, 17:29:00
    #37454045
Жентос
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
[MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера?
Разобрался, надо было мои edit box'ы включить в состав тега <form>. Все заработало
...
Рейтинг: 0 / 0
Форумы / ASP.NET [игнор отключен] [закрыт для гостей] / [MVC] Подскажите, как можно связать нажатие на кнопку с функцией контроллера? / 9 сообщений из 9, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]