如何在MVC 4中触发按钮点击

15

我是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");

        }

    }

如何在这里定义点击事件?我尝试了HTTP POST,但它不起作用。 我知道我的代码不正确,请指出错误所在。


你的视图周围有表单吗?我看不到。 - Nicholas King
点击这里在客户端执行。 - user2007801
4个回答

36

ASP.NET MVC不像ASP Classic那样基于事件工作,没有“按钮点击事件”。你的控制器方法对应于发送到服务器的请求。

相反,你需要将表单包装在类似以下代码的代码中:

@using (Html.BeginForm("SignUp", "Account", FormMethod.Post))
{
    <!-- form goes here -->

    <input type="submit" value="Sign Up" />
}

这将建立一个表单,然后您的提交按钮将触发POST请求,该请求将命中您的SignUp()方法,假设您的路由已正确设置(默认应该可以工作)。


1
值得注意的是,对于新手来说,这个代码块将驻留在视图(.cshtml)文件中。 - J. Murray

12
根据@anaximander的回答,但您的注册操作应该更像是:

根据 @anaximander 的回答,但您的注册行为应该看起来更像:

    [HttpPost]
    public ActionResult SignUp(Account account)
    {
        if(ModelState.IsValid){
            //do something with account
            return RedirectToAction("Index"); 
        }
        return View("SignUp");
    }

3
你可以尝试这段代码。
@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>}

0

MVC不涉及事件。只需在页面上放置一个表单和提交按钮,带有HttpPost属性的方法将处理该请求。

您可能需要阅读一两个教程,了解如何创建视图、表单和控制器。


<input type="submit" name="btnSubmit" value="注册" /> 但是它对我不起作用。 - user1589906
1
不工作并不是一种错误。在你的问题中解释清楚你看到了什么,期望得到什么结果。 - CodeCaster

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接