我已经在我的 asp.net mvc 4 上工作了一段时间,但我遇到了一个问题......实际上我有两个相关的问题......让我们先从简单的一个开始。
除了这个之外,我有很多视图和所有工作......我已经将其剥离并简化了尝试查找错误的过程......但以下仍然不是调用控制器方法:
@using TBS.Etracs.Web.Main.Areas.WorkOrder.Models
@model WorkOrderInputModel
@{
ViewBag.Title = "Work Orders Per Pad";
}
@using (Html.BeginForm("StartWorkOrderTask", "Mobile",
new {WorkCenterID=Model.WorkCenterID, VIN=Model.VIN }))
{
<div>
<label><strong>WorkCenterID:</strong></label>
<label>@Model.WorkCenterID</label>
</div>
<div>
<label><strong>VIN:</strong></label>
<label>@Model.VIN</label>
</div>
<input type="submit" value="Start Work Order" />
}
控制器方法是一个名为“MobileController”的控制器,这里是方法签名:
[HttpPost] //Tried with and without this attribute...
public ActionResult StartWorkOrderTask(int WorkCenterID, string VIN)
{
}
我在控制器方法中设置了一个断点......当表单上的输入按钮被点击时它永远不会被调用......
我以前见过这种问题,原因是:1)有多个 beginForm 2)没有包含正确的 javascript 文件 3)样式参数 ....我不知道为什么,但是在某些控件上包含样式导致了输入按钮不起作用... 4)我确定我打过其他人,但他们现在不想起...
我已经使用 firebug 检查了 html,但没有发现任何问题……它正在创建一个带有指向该方法的 dataurl 的表单……填写了 WorkCenterID 和 VIN 的值……可能是什么引起问题??????
有没有人建议看什么或尝试调试什么?
我的第二个问题也涉及到控制器方法的调用......我知道我们应该能够拥有这样的方法:
public ActionResult StartWorkOrderTask(WorkOrderInputModel model)
这个在beginForm上
@using(Html.BeginForm("StartWorkOrderTask", "Mobile"))
但是大约 90% 的情况下,当我这样做时,控制器方法确实会被调用......我点击了输入按钮,但没有任何反应......通过明确地将参数放在 beginForm 中,我“解决”了问题...... ..但我不知道为什么第一个不起作用
我没有为路线定义任何特殊的东西......只是使用了默认......我正在使用区域,但我一直小心命名,所以没有冲突......