C# ASP MVC onclick for按钮
我刚开始使用ASP MVC,我来自Web表单的背景。 我启动了一个MVC互联网应用程序,想知道按钮是如何从控制器调用动作的。这里我想使用MVC Internet应用程序提供的登录示例 会计控制员: 很多方法 登录视图:C# ASP MVC onclick for按钮,c#,asp.net-mvc-4,razor,webforms,onclick,C#,Asp.net Mvc 4,Razor,Webforms,Onclick,我刚开始使用ASP MVC,我来自Web表单的背景。 我启动了一个MVC互联网应用程序,想知道按钮是如何从控制器调用动作的。这里我想使用MVC Internet应用程序提供的登录示例 会计控制员: 很多方法 登录视图: @using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) { @Html.AntiForgeryToken() @Html.ValidationSummary(true) <fieldset>
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
<fieldset>
<legend>Log in Form</legend>
<ol>
<li>
@Html.LabelFor(m => m.UserName)
@Html.TextBoxFor(m => m.UserName)
@Html.ValidationMessageFor(m => m.UserName)
</li>
<li>
@Html.LabelFor(m => m.Password)
@Html.PasswordFor(m => m.Password)
@Html.ValidationMessageFor(m => m.Password)
</li>
<li>
@Html.CheckBoxFor(m => m.RememberMe)
@Html.LabelFor(m => m.RememberMe, new { @class = "checkbox" })
</li>
</ol>
<input type="submit" value="Log in" />
</fieldset>
@使用(Html.BeginForm(新的{ReturnUrl=ViewBag.ReturnUrl})){
@Html.AntiForgeryToken()
@Html.ValidationSummary(true)
登录表格
@LabelFor(m=>m.UserName)
@Html.TextBoxFor(m=>m.UserName)
@Html.ValidationMessageFor(m=>m.UserName)
@LabelFor(m=>m.Password)
@Html.PasswordFor(m=>m.Password)
@Html.ValidationMessageFor(m=>m.Password)
@CheckBoxFor(m=>m.RememberMe)
@LabelFor(m=>m.RememberMe,新的{@class=“checkbox”})
因此,当我点击视图上的sumbit按钮时,AccountController类中的哪个方法将被调用?您如何计算它
谢谢大家:)当您单击“提交”按钮时,您会发送一个post请求,并且在您的AccountUncontroller中,此控制器操作应被称为:
[HttpPost]
public ActionResult Login(Usermodel model)
{
}
我建议你们看教程来学习MVC控制器、动作和其他一些东西。这是一个很好的培训
编辑:在MVC中,当您键入类似于localhost/Home/Index
的URL时,它首先进入Home Controller
并查找索引操作,并且必须是[HttpGet]操作,因为您的请求是Get请求。但您不需要使用HttpGet
属性标记action
,因为这是默认行为。由于您的RouteConfig
,它的工作方式是这样的。如果查看HomeController
和AccountController
,您的控制器将返回视图我将看到所有操作都返回一个视图,如果您右键单击操作并单击转到该视图,您将看到属于控制器的视图
我刚开始玩ASP MVC,我来自一个
Web表单的背景
在aspx中使用与按钮相同的ajax post,url作为操作名称和控制器名称,这是使用webforms可以获得的最接近的url
$.ajax({
url: '@Url.Action("SendMail", "Contact")',
type: 'POST',
data: { listID: selected.toString(), flag: flag },
traditional: true,
success: function (result) {
}
});
也可以在MVC中使用默认方式使用整个表单post
[HttpPost]
public ActionResult SendMail(Mail model)
{
}
因为你已经定义了
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
在您的视图上,它将通过路由指向默认操作,但是您可以使用
@using (Html.BeginForm("ActionName", "ControllerName", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post)) {
我假定您正在谈论默认的ASP.NET MVC模板,在本例中,您将看到在Login.cshtml
视图中,您在顶部定义了一个模型:
@model MyApp.Models.LoginModel
这会将您的视图绑定到此模型。当您执行POST
时,它会从表单中收集html元素,其名称与模型属性对应
@using (Html.BeginForm(new { ReturnUrl = ViewBag.ReturnUrl })) {
...
}
这将在此处创建一个html表单,该表单将发布到/Account/Login
。但是,您可以指定其他位置:
@using (Html.BeginForm("Index", "Home", new { ReturnUrl = ViewBag.ReturnUrl }, FormMethod.Post)) {
...
}
在服务器端,您将需要相同的型号:
public ActionResult Login(LoginModel model, string returnUrl)
{
// awesomeness ...
}
你怎么知道该模型将被调用登录?因为我在视图中看不到任何对该模型的引用。这里是如何创建模型的?我添加了一些解释,但如果你看我建议你的视频会更好,我的英语不够好=))谢谢你的帮助,我将观看你发送给我的视频:)为什么这是负面的我说你可以点击你的按钮,如果你需要的话,你可以有一个带有参数的ajax帖子,上面有动作和控制器名称。他不想使用ajax,他想了解MVClogic@Selman22这是最符合逻辑的解释,他是一个网络表单开发人员,在他做一些研究之前,谢谢你的回答也很有用:)@Brian当然,很高兴我能帮上忙。