Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ASP MVC onclick for按钮_C#_Asp.net Mvc 4_Razor_Webforms_Onclick - Fatal编程技术网

C# ASP MVC onclick for按钮

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>

我刚开始使用ASP MVC,我来自Web表单的背景。 我启动了一个MVC互联网应用程序,想知道按钮是如何从控制器调用动作的。这里我想使用MVC Internet应用程序提供的登录示例

会计控制员:

很多方法

登录视图:

@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当然,很高兴我能帮上忙。