我在我的 ReceivingController
Index.cshtml
视图中具有以下形式:
@using (Html.BeginForm("Details", "Grv"))
{
@Html.TextBox("grvNumber")
<input type="submit" value="search" />
}
据我了解,这应该重定向到我的GrvController
的Details.cshtml
,以grvNumber
作为输入。
但是,当我提交表格时,我只需返回同一页面(Receiving/Index
(。
我怀疑这可能与我的路由有关,但我无法弄清楚发生了什么。
RouteConfig
routes.MapRoute(
name: "Default",
url: "",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Receiving",
url: "receiving",
defaults: new { controller = "Receiving", action = "Index" }
);
routes.MapRoute(
name: "ViewGrv",
url: "receiving/{grvNumber}",
defaults: new { controller = "Grv", action = "Details" }
);
routes.MapRoute(
name: "ViewPallet",
url: "receiving/{grvNumber}/{palletSequence}",
defaults: new { controller = "Pallet", action = "Details" }
);
grvController
public class GrvController : Controller
{
public ActionResult Details(string grvNumber)
{
var access = new Access();
var grvData = access.GetGrvData(grvNumber);
var grv = new Grv(grvData);
Session["grv"] = grv;
return View(grv);
}
}
我尝试将[HttpPost]
添加到GrvController
Details
方法,并将FormMethod.post
参数添加到BeginForm
,但行为完全相同。
如果我手动导航到URL ../receiving/8
,则我会看到正确的Grv
Details
页面,但是在提交Receiving
表单后,我需要看到此页面。
我可以从设定提交表格的断开点可以看出,从未到达GrvController
任何建议都非常感谢,让我知道我是否可以发布更多详细信息。
只需更改您的RouteConfig文件
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);