【问题标题】:How to trigger button click in MVC 4如何在 MVC 4 中触发按钮单击
【发布时间】:2013-05-08 12:11:22
【问题描述】:

我是 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 帖子但它不起作用我知道我的代码不正确请指出这里的错误是什么

【问题讨论】:

标签: c# asp.net-mvc-4


【解决方案1】:

ASP.NET MVC 不适用于 ASP 经典之类的事件;没有“按钮点击事件”。您的控制器方法对应于发送到服务器的请求。

相反,您需要将该表单包装在如下代码中:

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

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

这将设置一个表单,然后您的提交输入将触发一个 POST,这将触发您的 SignUp() 方法,假设您的路由设置正确(默认值应该有效)。

【讨论】:

  • 对于新手来说值得注意的是,这段代码将驻留在 View (.cshtml) 文件中
【解决方案2】:

根据@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>}
    

    【讨论】:

      【解决方案4】:

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

      您可能想阅读一两个关于如何创建视图、表单和控制器的教程。

      【讨论】:

      • 但它对我不起作用
      • 不工作不是错误。解释(在你的问题中,而不是在 cmets 中)你所看到的和你期望的。
      猜你喜欢
      • 2022-01-01
      • 2018-09-30
      • 1970-01-01
      • 2012-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-04-19
      • 1970-01-01
      相关资源
      最近更新 更多