如何在ASP.NETMVC4中将HTML5表单操作链接到控制器ActionResult方法

我有一个基本表单,我希望通过调用视图关联的控制器类中的ActionResult方法来处理表单中的按钮。以下是表单的HTML5代码:

<h2>欢迎&lt/h2>
<部门>
<h3>登录&lt/h3>
<form method=“post”操作=<!--这里是什么--&gt&燃气轮机;
用户名:<输入type=“text”name=“username”/&gt&书信电报;br/>
密码:<输入type=“text”name=“password”/&gt&书信电报;br/>
<输入type=“submit”value=“Login”>
<输入type=“submit”value=“创建帐户”/>
&lt/表格>
&lt/部门>
<!--更多代码--&燃气轮机;

相应的控制器代码如下:

[HttpPost]
公共操作结果MyAction(字符串输入,FormCollection集合)
{
开关(输入)
{
案例“登录”:
//做些事情。。。
打破
案例“创建帐户”
//做一些其他的事情。。。
打破
}
返回视图();
}

您可以使用HTML帮助器并

@使用(Html.BeginForm())
{
用户名:<输入类型=“text”name=“用户名”/><br/>
密码:<input type=“text”name=“Password”/><br/>
<输入type=“提交”value=“登录”>
<输入type=“submit”value=“创建帐户”/>
}

或者使用Url帮助器

<form method=“post”action=“@Url.action(“MyAction”、“MyController”)”>

Html.BeginForm有几个(13)覆盖,您可以在其中指定更多信息,例如,上载文件时的正常使用是使用:

@使用(Html.BeginForm(“myaction”、“mycontroller”、FormMethod.Post、new{enctype=“multipart/formdata”}))
{
<…>
}

如果未指定任何参数,则Html.BeginForm()将创建一个POST表单,该表单将指向当前控制器和当前操作。例如,假设您有一个名为Posts的控制器和一个名为Delete

公共操作结果删除(int id)
{
var model=db.GetPostById(id);
返回视图(模型);
}
[HttpPost]
公共操作结果删除(int id)
{
var model=db.GetPostById(id);
如果(型号!=null)
db.DeletePost(id);
返回重定向到视图(“索引”);
}

您的html页面将类似于:

<h2>是否确实要删除?&lt/h2>
<p>该职位名为<strong&[email protected]模型名称&lt/strong>将被删除。&lt/p>
@使用(Html.BeginForm())
{
<输入type=“submit”class=“btn btn danger”value=“Delete Post”/gt;
<text>或</text>
@ActionLink(“转到列表”、“索引”)
}

发表评论