Как запустить нажатие кнопки в MVC 4
Я новичок в MVC, и я создаю регистрационную форму для своего приложения, но моя кнопка не работает. Текущий код не указан ниже.
Вид
<fieldset>
<legend>Sign Up</legend>
<table>
<tr>
<td>
@Html.Label("User Name")
</td>
<td>
@Html.TextBoxFor(account => account.Username)
</td>
</tr>
<tr>
<td>
@Html.Label("Email")
</td>
<td>
@Html.TextBoxFor(account => account.Email)
</td>
</tr>
<tr>
<td>
@Html.Label("Password")
</td>
<td>
@Html.TextBoxFor(account => account.Password)
</td>
</tr>
<tr>
<td>
@Html.Label("Confirm Password")
</td>
<td>
@Html.Password("txtPassword")
</td>
</tr>
<tr>
<td>
<input type="submit" name="btnSubmit" value="Sign Up" />
</td>
</tr>
</table>
</fieldset>
модель
public class Account
{
public string Username { get; set; }
public string Email { get; set; }
public string Password { get; set; }
}
контроллер (не полностью завершен)
public class AccountController : Controller
{
//
// GET: /Account/
public ActionResult Index()
{
return View();
}
// GET: /Account/SignUp
public ActionResult SignUp()
{
return View();
}
[HttpPost]
public ActionResult SignUp(string userName,string email,string password)
{
Account createAccount = new Account();
createAccount.Username = userName;
createAccount.Email = email;
createAccount.Password = password;
return View("Index");
}
}
как определить событие click здесь Я пробовал сообщение http, но его не работает Я знаю, что мой код неправильный, пожалуйста, укажите, что здесь является ошибкой
Ответы
Ответ 1
ASP.NET MVC не работает над такими событиями, как ASP classic; нет "события нажатия кнопки". Ваши методы контроллера соответствуют запросам, отправленным на сервер.
Вместо этого вам нужно обернуть эту форму в код примерно так:
@using (Html.BeginForm("SignUp", "Account", FormMethod.Post))
{
<!-- form goes here -->
<input type="submit" value="Sign Up" />
}
Это создаст форму, а затем ваш ввод будет инициировать POST, который будет использовать ваш метод SignUp()
, предполагая, что ваши маршруты настроены правильно (значения по умолчанию должны работать).
Ответ 2
в соответствии с ответом @anaximander s, но ваше действие с регистрацией должно выглядеть больше как
[HttpPost]
public ActionResult SignUp(Account account)
{
if(ModelState.IsValid){
//do something with account
return RedirectToAction("Index");
}
return View("SignUp");
}
Ответ 3
yo может попробовать этот код
@using (Html.BeginForm("SignUp", "Account", FormMethod.Post)){<fieldset>
<legend>Sign Up</legend>
<table>
<tr>
<td>
@Html.Label("User Name")
</td>
<td>
@Html.TextBoxFor(account => account.Username)
</td>
</tr>
<tr>
<td>
@Html.Label("Email")
</td>
<td>
@Html.TextBoxFor(account => account.Email)
</td>
</tr>
<tr>
<td>
@Html.Label("Password")
</td>
<td>
@Html.TextBoxFor(account => account.Password)
</td>
</tr>
<tr>
<td>
@Html.Label("Confirm Password")
</td>
<td>
@Html.Password("txtPassword")
</td>
</tr>
<tr>
<td>
<input type="submit" name="btnSubmit" value="Sign Up" />
</td>
</tr>
</table>
</fieldset>}
Ответ 4
MVC не выполняет события. Просто поместите форму и отправьте кнопку на странице, и метод, украшенный атрибутом HttpPost, обработает этот запрос.
Возможно, вы захотите прочитать учебное пособие или два о том, как создавать представления, формы и контроллеры.