使用控制器方法提交表单

时间:2014-03-09 13:26:44

标签: asp.net-mvc asp.net-mvc-controller

我正在尝试从视图中调用方法,但它无法正常工作! :(

我的控制器代码:

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按钮时没有任何反应。

1 个答案:

答案 0 :(得分:1)

一些问题:

  • 您可能希望<button>使用type="submit",否则表单将无法提交,按钮将不执行任何操作。另见:MDN - Button Type
  • Html.BeginForm("Professional", "Sum")应为Html.BeginForm("Sum", "Professional") - 控制器是第二个参数 Html.BeginForm("Sum")也适用于此,因为这是当前的控制器。
  • 输入应该有name="nro1",而不是id - 这是正在提交的名称。
  • @ViewBag.SumResult之后不需要分号(虽然这不是错误)。
  • 我不确定data-toggle="button"在这里做了什么。

请注意,您不是“从视图中调用Controller” - 您正在提交表单,该表单将启动新的Controller-View周期。 Html.Action可以做类似的事情,但这不是你在这里要做的事情。

我也借此机会并建议不要使用ViewBag - Use a strongly typed view model代替