我在Controller文件夹中有一个BlogPostController
控制器,其中包含以下操作方法。当您单击Create
中的<a asp-controller="BlogPost" asp-action="Create" asp-route-id="@item.BlogId">Create</a>
链接时,它正确调用Get方法,并在Create.cshtml页面上插入新值后,它将在SQL DB中创建一条记录。但之后,它会将链接重定向到不存在的http://localhost:59616/BlogPost/~BlogPost/Index.cshtml
。似乎应用程序假设Views文件夹位于Controller / PostBlog文件夹中,并尝试将路径~/Views/BlogPost/Index.cshtml
附加到它。但是Controller文件夹下没有BlogPost文件夹,如下所示。这可能有什么问题?:
// 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);
}
项目文件夹结构:
注意:我在Windows 7上使用ASP.NET Core 1.0和VS2015
答案 0 :(得分:0)
我明白了。问题是RedirectToAction(...)方法没有视图路径的任何输入参数。相反,我只需要提供动作名称,例如:return RedirectToAction(&#34; Index&#34;);