ASP.NET MVC中的按钮事件

Dom*_*nic 8 asp.net-mvc

我在MVC中创建了视图页面

<%using (Html.BeginForm())
{ %>
    <%=LabelHelpers.Label("firstname", "FirstName:")%>
    <br/>
    <%=Html.TextBox("firstname")%>
    <br/><br/>
    <%=LabelHelpers.Label("lastname", "Lastname:")%>
    <br/>
    <%=Html.TextBox("lastname")%>
    <br/><br/>
    <input type="Button" value="Register"/>
<%} %>
Run Code Online (Sandbox Code Playgroud)

在这里,我想写Buttonclick事件...我应该怎么写?

Mic*_*ins 12

您的输入属于类型button- 如果没有其他客户端代码,这些操作不会执行任何操作.

如果要以与ASP.NET中相似的方式处理服务器上的"事件",则应将其转换为提交按钮.假设你的控制器被称为"帐户"和你的行动被称为"注册"您目前的代码看起来事情是这样的:

public ViewResult Register()
{
    return View();
}
Run Code Online (Sandbox Code Playgroud)

您希望首先将模型传递给视图:

public ViewResult Register()
{
    var registerModel = new RegisterModel();

    return View(registerModel);
}
Run Code Online (Sandbox Code Playgroud)

您当前的视图使用的是松散类型的输入.由于您传递的是模型,因此可以使用强类型视图.你的模型应该是这样的:

public class RegisterMode
{
    public string Firstname { get; set; }
    public string Surname { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

要使用强类型视图,请将视图更改为如下所示:

<%using (Html.BeginForm())
{ %>
    <%=Html.LabelFor(x => x.Firstname)%>
    <br/>
    <%=Html.TextBoxFor(x => x.Firstname)%>
    <br/><br/>
    <%=Html.LabelFor(x => x.Surname)%>
    <br/>
    <%=Html.TextBoxFor(x => x.Surname)%>
    <br/><br/>
    <input type="submit" value="Register"/>
<%} %>
Run Code Online (Sandbox Code Playgroud)

我们所做的是告诉视图为RegisterModel类型构建标签和文本框.当您将表单POST到控制器时,这将允许自动映射模型值.

接受帖子,我们需要向控制器添加一个新的Action,名称相同,但接受RegisterModel类型的参数:

public ActionResult Register(RegisterModel model)
{
    // do something with the model, such as inserting it into the database.
    // model.Firstname will contain the value of the firstname textbox
    // model.Surname will contain the value of the surnaem textbox

    return RedirectToAction("Success");
}
Run Code Online (Sandbox Code Playgroud)

为安全起见,最后要做的是将控制器操作添加[HttpGet][HttpPost]属性以控制它们接受的方法:

[HttpGet]
public ViewResult Register()
Run Code Online (Sandbox Code Playgroud)

[HttpPost]
public ActionResult Register(RegisterModel model)
Run Code Online (Sandbox Code Playgroud)

我建议您在http://www.asp.net/mvc上阅读MVC 并阅读Professional MVC中的NerdDinner教程章节(可在线免费获取PDF格式).