在asp.net mvc中处理按钮点击的正确方法?

时间:2010-10-23 21:37:59

标签: c# asp.net-mvc

我正在制作一个网页(http://example.com/calculation/)。该网站将进行简单的计算。该页面将以文本框(asp:TextBox)的形式向用户显示两个输入字段。我想知道如何处理点击“Calc”按钮(asp:按钮)?

我是否使用控制器进行页面,因为我正在使用MVC模板?我该如何组织我的代码?

我想在两个文本框中获取用户输入,并在“结果”标签中输出值。

2 个答案:

答案 0 :(得分:12)

最简单的干净方式提供了Model类,Controller和View。请看以下示例:

模特:

public class CalculatorModel {
    public int Result { get; set; }
    public int FirstOperand { get; set; }
    public int SecondOperand { get; set; }
}

控制器:

public class CalculatorController : Controller {
    [HttpGet]
    public ActionResult Sum() {
        CalculatorModel model = new CalculatorModel();
        //Return the result
        return View(model);
    }

    [HttpPost]
    public ActionResult Sum( CalculatorModel model ) {
        model.Result = model.FirstOperand + model.SecondOperand;
        //Return the result
        return View(model);
    }
}

观点:

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<CalculatorModel>" %>

    <% using ( Html.BeginForm("Sum", "Calculator", FormMethod.Post, new { id = "calcForm" }) ) { %>
       <table border="0" cellpadding="3" cellspacing="1" width="100%">
       <tr valign="top">
           <td>
              <%= Html.LabelFor(model => model.FirstOperand) %>
              <%= Html.TextBoxFor(model => model.FirstOperand) %>
           </td>
       </tr>
       <tr valign="top">
           <td>
              <%= Html.LabelFor(model => model.SecondOperand) %>
              <%= Html.TextBoxFor(model => model.SecondOperand) %>
           </td>
       </tr>
       </table>
        <div style="text-align:right;">
            <input type="submit" id="btnSum" value="Sum values" />
        </div>
    <% } %>

我的建议是遵循ASP.NET MVC的一些教程。你可以找到很多与谷歌。 ASP.NET MVC web site是一个很好的起点。

希望它有所帮助!

答案 1 :(得分:3)

我相信你的问题取决于对新成员对MVC设计模式的常见误解。在MVC设计模式中,如何组织模型,视图和控制器是一个偏好的问题。

也就是说,像ASP.NET MVC这样的Web框架建议某些组织,因为它们倾向于通过网站的URL公开模式实现。为了说明开箱即用,ASP.NET MVC将为计算控制器的http://example.com/calculation/add操作创建此路由add。作为开发人员,您可以通过创建custom routes来覆盖此行为,这意味着您应该以对您有逻辑意义的方式组织模型,视图和控制器。

根据定义,您的网站只是进行简单的计算,我建议您创建一个具有各种操作的控制器:加,减,除等.Lorenzo提供了如何开始his answer的基础。< / p>