ASP.NET Button Click事件似乎没有触发

时间:2010-09-12 23:33:41

标签: asp.net-mvc-2

我对ASP.NET比较陌生。我有一个ASP.NET MVC 2 Web应用程序项目(在Visual Studio 2010中创建)。我在HomeController中添加了一个名为Search

的方法
public ActionResult Search()
{
    return View();
}

并创建了一个名为Search.aspx的相应视图(网页),我在其上删除了一个按钮。我双击按钮为按钮单击事件添加处理程序,该事件设置TextBox的文本,然后构建应用程序。

<script runat="server">


protected void MyButton1_Click(object sender, EventArgs e)
{
    System.Diagnostics.Debug.WriteLine("Undo button clicked");
    m_search_text_box.Text = "MyButton1_Click";
}

...

        

当我点击浏览器中的按钮(我在Chrome和Internet Explorer中测试过)时,没有任何反应。文本框未更新。什么都没有写入输出窗口。所以,事件看起来并不像是在解雇。任何人都可以提供任何建议吗?我在Windows 7上使用Visual Studio 2010。

由于

2 个答案:

答案 0 :(得分:2)

您正在将WebForms事件处理混合到MVC应用程序中。 MVC不像WebForms那样工作。查看tutorials on MVC2,以帮助您开始正确的道路。

这是一个sample app,其中包含一步一步的教程,以帮助您了解MVC的基础知识。

答案 1 :(得分:0)

ASP.NET MVC不使用像这样的处理程序后面的代码。您使用控制器操作来响应请求,并决定如何以可视方式处理它们(即:您可以呈现视图,或返回JSON对象,或重定向到另一个Action等)。

在您的实例中,如果您想在用户单击按钮后在文本框中放置一些文本,您需要在表单中放置一个“提交”按钮,并创建一个控制器操作来响应它:

[HttpPost]
public ActionResult Search()
{
    var model = new SearchModel();
    model.StatusText = "MyButton1_Click";

    return View(model);
}

在您的视图中,您希望使用此模型,并将其StatusText属性值放入文本框中:

<%= Html.TextBoxFor(x => x.StatusText) %>

查看the ASP.NET MVC website,其中有很多很棒的入门教程,以及Nerd Dinner教程(本书的免费章节)。