Как запустить нажатие кнопки в 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, обработает этот запрос.

Возможно, вы захотите прочитать учебное пособие или два о том, как создавать представления, формы и контроллеры.