2

我试图从视图中调用一个方法,但它不起作用!:(

我的控制器代码:

public class ProfessionalController : Controller
{
    //
    // GET: /Professional/
    public ActionResult Index()
    {
        return View();
    }


    public ActionResult Sum(int nro1, int nro2)
    {
        var value = nro1 + nro2;

        ViewBag.SumResult = value;

        return View();
    }
}

我的意见代码:

专业指数:

@{
    ViewBag.Title = "Profissional";
}

<h2>Profissional</h2>


@using (Html.BeginForm("Professional", "Sum")) {

    <input id="nro1" type="number" class="form-control marged_top" placeholder="Numero 1" />
    <input id="nro2" type="number" class="form-control marged_top" placeholder="Numero 2" />


    <button id="Sum" name="Sum" value="Sum" class="btn btn-default" type="button"
            data-toggle="button">

        Sum
    </button>

}

总和视图:

@{
    ViewBag.Title = "Sum";
}

<h2>Sum</h2>


@ViewBag.SumResult;

不会发生任何错误,当我单击 Sum 按钮时没有任何反应。

4

1 回答 1

1

一些问题:

  • 你可能想要你的<button>with type="submit",否则表单将不会被提交,并且按钮将什么也不做。另请参阅:MDN - 按钮类型
  • Html.BeginForm("Professional", "Sum")应该是Html.BeginForm("Sum", "Professional")- 控制器是第二个参数。
    Html.BeginForm("Sum")也可以在这里工作,因为这是当前控制器。
  • 输入应该有name="nro1",而不是id- 它是正在提交的名称。
  • 之后不需要分号@ViewBag.SumResult(尽管这不是错误)。
  • 我不确定data-toggle="button"这里在做什么。

请注意,您不是“从视图中调用控制器” - 您正在提交一个表单,它启动了一个新的控制器-视图循环。Html.Action可以做类似的事情,但这不是你在这里想要做的。

我也借此机会建议不要使用ViewBag-改用强类型视图模型

于 2014-03-09T13:35:01.953 回答