2010-10-23 22 views
5

Estoy haciendo una página web (http://example.com/calculation/). Este sitio hará cálculos simples. La página presentará al usuario dos campos de entrada en forma de cuadros de texto (asp: TextBox). Me pregunto cómo hago para manejar presionando el botón "Calc" (asp: Button)?¿Manera correcta de manejar los clics de botón en asp.net mvc?

Cómo puedo utilizar el controlador de la página ya que estoy usando la plantilla MVC? ¿Cómo debería organizar mi código?

Quiero buscar a la entrada de los usuarios en los dos cuadros de texto y el valor de salida en una etiqueta de "número".

+0

¿Tiene la intención de hacerlo a través de Ajax? – ahsteele

+0

no. solo envíe los datos, calcule y devuelva el valor – Jason94

Respuesta

12

La manera más simple limpia proporciona una clase de modelo, un controlador y una vista. Por favor, mira el siguiente ejemplo:

El Modelo:

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

El controlador:

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); 
    } 
} 

La Vista:

<%@ 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> 
    <% } %> 

Mi consejo es seguir algún tutorial sobre ASP .NET MVC. Puedes encontrar muchos con google. El ASP.NET MVC web site es un buen lugar para comenzar.

Espero que ayude!

+0

¡Justo lo que estaba buscando, gracias! – Jason94

+0

@ Jason94: De nada – Lorenzo

+0

Buena y limpia respuesta. +1 – RPM1984

3

Creo que su pregunta está articulada en un malentendido común que los recién llegados al patrón de diseño MVC. En el patrón de diseño de MVC, cómo organizas tu modelo, vista y controladores es una cuestión de preferencia.

Dicho esto, los marcos web como ASP.NET MVC sugieren ciertas organizaciones debido a su tendencia a exponer la implementación de patrones a través de las URL de un sitio. Para ilustrar fuera de la caja ASP.NET MVC crearía esta ruta http://example.com/calculation/add para la acción del controlador Cálculo add. Como desarrollador, puede anular este comportamiento creando custom routes, lo que significa que debe organizar sus modelos, vistas y controladores de una manera que tenga un sentido lógico para usted.

Dado que, por definición, su sitio es sólo hacer cálculos sencillos que recomendaría la creación de un único controlador con una variedad de acciones: sumar, restar, dividir, etc. Lorenzo proporciona la base de cómo empezar en his answer.

Cuestiones relacionadas