如何在MVC中触发事件

时间:2013-04-04 08:40:05

标签: asp.net-mvc-4

我想在MVC4中执行按钮点击事件。我是MVC4的新手,不知道在哪里编写事件,函数以及如何处理它们模型,视图和控件。

有没有人有同样的想法?

如果有人帮我详细解释和举例,我将不胜感激。

提前致谢。

2 个答案:

答案 0 :(得分:3)

MVC 4基本上是无状态的,因此与Web窗体不同,没有“自动”方式将浏览器UI上的按钮单击连接到C#代码。

它的处理方式一般是当你点击一个按钮(例如<button>?)时,它会通过AJAX或标准浏览器重定向触发HTTP请求。该HTTP请求由控制器上的操作处理。

所以说你有这个控制器:

public class MyController : Controller {
    public string Foo() {
        return "Bar!";
    }
}

您可以在Razor中将您的标记和jQuery连接起来:

<button id="my-button">Call Foo!</button>
<script>
    jQuery(function ($) {
        $('#my-button').on('click', function () {
            $.ajax({
                url : '@Url.Action("Foo", "MyController")',
                type : 'GET'
            });
        });
    });
</script>

这基本上是一个非常快速的要点。

答案 1 :(得分:2)

我将从基础开始。你不需要jquery ......阅读http://weblogs.asp.net/scottgu/archive/2007/12/09/asp-net-mvc-framework-part-4-handling-form-edit-and-post-scenarios.aspx以了解asp.net MVC是如何工作的。

使用相同的名称在控制器中定义两个方法。使用HttpVerbs.Post定义的方法将是单击按钮(POST请求)时调用的方法。

在您的按钮周围放置一个指向您的方法的表单,当您单击该按钮时,它将运行以HttpVerbs.Post命名的方法。

查看

<form action="Home/MyMethod" method="post">
    <input type="text" id="username" />
    <button text="Click me" />
</form>

<强>控制器

public class HomeController : Controller
{
    public ActionResult MyMethod()
    {
        return View();
    }

    [AcceptVerbs(HttpVerbs.Post)]
    public ActionResult MyMethod(string username)
    {
        // notice the string username matches the <input id="username"...
        // alternatively you can pass a FormCollection to this method.
        return View();
    }
}