應用程序的默認網址是 http://servername/Root/ITProjectsMVC路由到不正確的URL的HTTP POST
有使用默認頁上的「團隊」菜單項,應重定向到另一個控制器指數將顯示一個下拉列表在以下網址
http://servername/Root/ITProjects/Team
它的正常工作爲止。
然而,當用戶在下拉列表中選擇一個項目,就應該到下面的網址 http://servername/Root/ITProjects/Team/Index?Id=7
但它引導到 http://servername/Team/Index?Id=7
,並拋出404錯誤。它在服務器名後缺少文件夾路徑「Root/ITProjects」。它的正常工作在本地主機上不存在的文件夾路徑,但未能就部署到測試或
[AuthorizeAD(Groups = "APP_xxxx_Users")]
public class TeamController : Controller
{
public int pageSize = 5;
private IProjectService _projectService;
public TeamController(IProjectService projectService)
{
this._projectService = projectService;
}
public ActionResult Index(int? Id, int? page)
{
int pageNumber = (page ?? 1);
var viewModel = new TeamViewModel();
if (Id != null)
{
viewModel.SelectedMember = (int)Id;
viewModel.Tasks = this._projectService.GetTasksByStaff(viewModel.SelectedMember).ToPagedList(pageNumber, pageSize);
}
return View(viewModel);
}
[HttpPost, ActionName("Index")]
public ActionResult IndexPost(int Id, int? page)
{
int pageNumber = (page ?? 1);
var viewModel = new TeamViewModel();
viewModel.SelectedMember = Id;
if (ModelState.IsValid)
{
viewModel.Tasks = this._projectService.GetTasksByStaff(viewModel.SelectedMember).ToPagedList(pageNumber, pageSize);
}
return View(viewModel);
}
}
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
爲索引視圖的一部分時,下拉列表項目被選中
@Html.DropDownListFor(m => m.SelectedMember, new SelectList(Model.StaffList, "UniqueId", "Initials", Model.SelectedMember), new { @class = "btn btn-default btn-color", onchange = @"form.action='/Team/Index?Id=' +this.value;form.submit();" })
我沒有將虛擬目錄轉換爲應用程序。正如我在文章中提到的(剛剛更新),默認情況下沒有問題,並重定向到其他控制器索引方法。只有當其他控制器發出http信息時纔會失敗。當我確實將route.config更改爲Root/ITProjects/....時,它將在所有頁面上拋出404錯誤 – ChinnaR
您的窗體在視圖中的外觀如何?更具體地說,你如何在表單中構建POST URL?最後,在Dev Tools中查看呈現的表單 - 什麼是發佈URL? – viperguynaz
我已在帖子底部的索引視圖中發佈了dropdownlistfor。根據選定的項目,我正在致電onchange事件。 – ChinnaR