我正在尝试从视图中调用方法,但它无法正常工作! :(
我的控制器代码:
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按钮时没有任何反应。
答案 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代替