asp.net-mvc - ASP.NET MVC 中的按钮事件

标签 asp.net-mvc

我在 MVC 中创建了 View 页面,例如

<%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"/>
<%} %>

在这里我想写 Buttonclick 事件...我应该如何写?在哪里写?

最佳答案

您输入的类型为 button - 如果没有额外的客户端代码,这些就不会做任何事情。

如果您想以与在 ASP.NET 中类似的方式处理服务器上的“事件”,则应将其转换为提交按钮。假设您的 Controller 称为“帐户”并且您的操作称为“注册”您的 当前 代码看起来像这样:

public ViewResult Register()
{
    return View();
}

您想首先将模型传递给 View :
public ViewResult Register()
{
    var registerModel = new RegisterModel();

    return View(registerModel);
}

您当前的 View 使用的是松散类型的输入。由于您将模型传递给它,因此您可以使用强类型 View 。您的模型应如下所示:
public class RegisterMode
{
    public string Firstname { get; set; }
    public string Surname { get; set; }
}

要使用强类型 View ,请将 View 更改为如下所示:
<%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"/>
<%} %>

我们所做的是告诉 View 为您的 RegisterModel 类型构建标签和文本框。这将允许在您将表单发布到 Controller 时自动映射模型值。

接受帖子,我们需要向 Controller 添加一个新的 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");
}

为了安全起见,最后要做的一件事是添加 [HttpGet][HttpPost]您的 Controller 操作的属性以控制它们接受的方法:
[HttpGet]
public ViewResult Register()


[HttpPost]
public ActionResult Register(RegisterModel model)

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

关于asp.net-mvc - ASP.NET MVC 中的按钮事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4722935/

相关文章:

c# - 将 DateTime 存储到 cookie 中的最佳方法是什么?

c# - Entity Framework ID 列问题

c# - 未知客户端或客户端未启用 Identity Server 4

asp.net-mvc - Ext.NET 未与 ASP.NET MVC 4 集成

asp.net - Web部署发布后如何在服务器上运行.bat文件

javascript - Jquery - 检查复选框是否被点击

asp.net-mvc - 调试部署的azure应用程序

c# - MVC 模型评估为无效,因为缺少一些已发布的数据

javascript - 为什么 jQuery Selectable 插件不能与 foreach 生成的列表一起使用?

c# - 想在 ASP.NET MVC 中每天执行一次查询