我是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帖子但它不起作用我知道我的代码不正确请指出这里的错误是什么
答案 0 :(得分:35)
ASP.NET MVC不适用于ASP经典之类的事件;没有“按钮点击事件”。您的控制器方法对应于发送到服务器的请求。
相反,您需要在代码中包装该表单:
@using (Html.BeginForm("SignUp", "Account", FormMethod.Post))
{
<!-- form goes here -->
<input type="submit" value="Sign Up" />
}
这将设置一个表单,然后您的提交输入将触发POST,这将触发您的SignUp()
方法,假设您的路由已正确设置(默认值应该有效)。
答案 1 :(得分:11)
根据@anaximander的回答,但你的注册动作看起来应该更像
[HttpPost]
public ActionResult SignUp(Account account)
{
if(ModelState.IsValid){
//do something with account
return RedirectToAction("Index");
}
return View("SignUp");
}
答案 2 :(得分: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>}
答案 3 :(得分:0)
MVC不会做事件。只需在页面上放置一个表单并提交按钮,使用HttpPost属性修饰的方法就会处理该请求。
您可能希望阅读有关如何创建视图,表单和控制器的教程。