【发布时间】:2016-07-30 16:01:22
【问题描述】:
我在 Visual Studio 中创建了一个 Web API 项目。我正在使用属性路由。这是Controllers文件夹下的控制器:
public class RegistrationController : Controller
{
// GET: Registration
[Route("")]
public ActionResult CreateUser(string platform)
{
return View("~/Views/Registration/CreateUser.cshtml", platform);
}
}
当我通过 URL http://localhost/application 调用 CreateUser 操作时,它可以工作,但是当我尝试通过 URL http://localhost/application?platform=android 传递查询字符串参数时,它会给出以下错误:
未找到视图“~/Views/Registration/CreateUser.cshtml”或其主视图,或者没有视图引擎支持搜索到的位置。这 搜索了以下位置:
~/Views/Registration/CreateUser.cshtml
~/Views/Registration/android.master
~/Views/Shared/android.master
~/Views/Registration/android.cshtml
~/Views/Registration/android.vbhtml
~/Views/Shared/android.cshtml
~/Views/Shared/android.vbhtml
我无法理解为什么它无法找到存在的视图,或者为什么它甚至尝试使用查询字符串参数的名称来查找视图。
【问题讨论】:
-
这段代码应该可以正常工作。您确定视图文件包含在项目/解决方案中吗?
-
您不应该在返回视图中需要视图的整个路径。另外,为什么顶部有一个空的路由装饰器?
-
虽然不需要整个路径,但它不会破坏任何东西。它应该仍然有效。空路由是让这个动作成为默认。
-
是的,视图文件包含在项目中。正如我所提到的,当我不使用查询字符串时,它工作得很好。查询字符串不为空时会出现问题。
标签: c# asp.net asp.net-mvc asp.net-web-api razor