找不到ASP.NET视图

本文关键字:视图 NET ASP 找不到 | 更新日期: 2023-09-27 17:59:23

我在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.cs.html'或其主视图,或者没有视图引擎支持搜索的位置。这个搜索了以下位置:

~/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

我不明白为什么它在那里找不到视图,或者为什么它甚至试图找到一个具有查询字符串参数名称的视图。

找不到ASP.NET视图

它可能可以找到视图。它找不到母版页。

那是因为你正在使用

class Controller : ... {
    ViewResult View(string viewName, string masterName);
}

使用视图名称母版页名称,用于呈现响应的视图。

线索是它在搜索视图时包含了参数值。因为您传递的平台参数是一个字符串,所以它将调用的方法与使用string viewNamestring masterName参数的方法相匹配。

CCD_ 6对于CCD_。在这种情况下,您可能希望将platform作为对象模型传递。您可以通过使用命名参数来解决此问题,这将通过让编译器知道您打算调用哪个重载方法来避免混淆。。。。

public class RegistrationController : Controller {
    // GET: Registration
    [Route("")]
    public ActionResult CreateUser(string platform) {
         return View("~/Views/Registration/CreateUser.cshtml", model: platform);
    }
}

从那里开始,一切都应该按预期进行