我在Controller文件夹中有一个BlogPostController
控制器,其中包含以下操作方法。当您点击<a asp-controller="BlogPost" asp-action="Create" asp-route-id="@item.BlogId">Create</a>
中的Create
链接时,它会正确调用Get方法,并在Create.cshtml页面上插入新值后,它会在SQL DB中创建一条记录。但之后,它将链接重定向到不存在的http://localhost:59616/BlogPost/~BlogPost/Index.cshtml
。看起来应用程序假设Views文件夹位于Controller/PostBlog文件夹内,并尝试将路径追加到~/Views/BlogPost/Index.cshtml
。但是,Controller文件夹下没有BlogPost文件夹,如下所示。什么可能是错在这里?:ASP.NET MVC应用程序正在搜索控制器文件夹中的视图
// GET: BlogPost/Create
public IActionResult Create()
{
return View("~/Views/BlogPost/Create.cshtml");
}
// POST: BlogPost/Create.
[HttpPost]
[ValidateAntiForgeryToken]
public async Task<IActionResult> Create([Bind("BlogId,Url")] Blog blog)
{
if (ModelState.IsValid)
{
_context.Add(blog);
await _context.SaveChangesAsync();
return RedirectToAction("~/Views/BlogPost/Index.cshtml");
}
return View("~/Views/BlogPost/Create.cshtml", blog);
}
项目文件夹结构:
注意:我使用ASP.NET 1.0的核心和VS2015在Windows 7
只需尝试返回View()和View(“Index”)。我猜测完整路径搞砸了 – Steve
我明白了。问题在于[RedirectToAction(...)](https://msdn.microsoft.com/en-us/library/system.web.mvc.controller.redirecttoaction(v = vs.118).aspx )方法没有任何视图路径的输入参数。相反,我只需要提供操作名称,如:return RedirectToAction(“Index”);' – nam
@Steve您是对的。请参阅我的评论和MSDN链接。 – nam