我配置了几个自定义路由,似乎干扰了我的控制器。 GET索引操作正常,但如果POST索引操作返回View,则会出现问题。它最终会走向不同的路线。所以我在这里访问我的网站http://mywebsitehere/sms,它会完成GET索引操作并呈现表单。
当我提交表单时,它会运行POST操作,如果ModelState不有效,则转到return View(model)
行。然后我在NavigationController
中收到错误,因为它试图获取一些不在那里的RouteData。它不应该在我的NavigationController中结束。
我的路线:
routes.MapRoute(
name: "Notifications",
url: "sms/{action}/{id}",
defaults: new { controller = "SMS", action = "Index", id = UrlParameter.Optional }
);
routes.MapRoute(
name: "Conference",
url: "conf/{conferenceCode}/{controller}/{action}",
defaults: new { conferenceCode = "", controller = "Home", action = "Overview" }
);
这是我的控制器的一个例子:
public ActionResult Index()
{
ViewBag.IsHome = true;
ViewBag.Theme = "a";
return View();
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index(SendSMSPageViewModel model)
{
if (ModelState.IsValid)
{
// DO STUFF HERE
ModelState.Clear();
return RedirectToAction("Index");
}
return View(model);
}
最后我的观点:
@using (Html.BeginForm("Index", "SMS", FormMethod.Post, new { data_ajax = "false" }))
{
@Html.AntiForgeryToken()
@* My Form stuff here *@
}
答案 0 :(得分:0)
这是我的错误。有人给了我一些建议,我想出了问题所在。我之前没有发布的一些代码:
ViewBag.IsHome = false;
这是我的GET,但不是我的POST,没有它运行部分视图,我不想运行。