使用ASP.Net MVC创建计算器

时间:2015-05-30 17:12:04

标签: c# asp.net asp.net-mvc asp.net-mvc-4

我刚刚开始使用ASP.Net,目前我正在尝试使用MVC创建一个简单的计算器。我有我的视图布局,但我无法调用我想要的对象。如果你知道任何好的指南或帮助解决我的问题会很棒。对于我的结果动作,我正在查看一个指南,它让我不知道如何处理它。 视图:

    @using CalculatorApp.Models
@{
    ViewBag.Title = "Index";
}

@using (Html.BeginForm("Index", "CalcController")) { 
<div>
    <h2>@Html.Label("Enter first number") : @Html.TextBox("num1")</h2>
    <h2>@Html.Label("Enter second number") : @Html.TextBox("num2")</h2>
</div>
<div>   
    <h2>

        @Html.RadioButton("calkey", "0") +
           <br>
        @Html.RadioButton("calkey", "1") -
           <br>
        @Html.RadioButton("calkey", "2") *
           <br>
        @Html.RadioButton("calkey", "3") /
    </h2>            
</div>
    <input type="submit" name="Index" value="Index"/>
}

型号:

namespace CalculatorApp.Models
{
    public class Calculations : Controller
    {
        //
        // GET: /Calculations/
        public int num1 { get; set; }
        public int num2 { get; set; }
        public int result { get; set; }

        public bool add { get; set; }
        public bool sub { get; set; }
        public bool mult { get; set; }
        public bool div  { get; set; }
    }
}

控制器:

namespace CalculatorApp.Controllers
{
    public class CalcController : Controller
    {     
        public ActionResult Index(Calculations calc)
        {
            int selectedFunction = Convert.ToInt32(Request["calkey"]);

            switch (selectedFunction)
            {
                case 0:
                    calc.result = calc.num1 + calc.num2;
                    break;
                case 1:
                        calc.result = calc.num1 - calc.num2;
                        break;
                case 2:
                        calc.result = calc.num1 * calc.num2;
                        break;
                case 3:
                        if (calc.num2 > 0)
                        {
                            calc.result = calc.num1 / calc.num2;
                        }
                        break; 
            }
            return View(calc);
        }

        public ActionResult Result(Calculations calc)
        {

            return View(calc);
        }
    }
}

我想解决的问题是当我按下提交按钮时如何使计算工作。我不知道从哪里开始。

1 个答案:

答案 0 :(得分:1)

我注意到的几个问题

  1. 查看您必须在Html.BeginForm中删除Controller(仅限控制器名称(Calc))

    Html.BeginForm("Index", "CalcController")更改为Html.BeginForm("Index", "Calc")

  2. 在您的模型中,您不应继承控制器

    public class Calculations : Controller更改为public class Calculations

  3. 控制器

    当您在索引方法发布数据时,您可以从控制器中删除结果方法。之后添加名为'Index'的新get方法,如

    public ActionResult Index() { return View(); }

  4. 最后,您必须要在视图中显示结果。所以在索引视图中创建一个元素,如@Html.TextBox("result")

    <强>更新

    如果您想在结果方法

    发布数据
    1. 将索引替换为@Html.BeginForm
    2. 处的结果
    3. 从索引方法中删除所有代码(也参数)(仅返回视图())并将这些代码粘贴到结果方法中。