代码之家  ›  专栏  ›  技术社区  ›  Karen Slon

单击按钮转到其他视图-找不到视图

  •  0
  • Karen Slon  · 技术社区  · 6 年前

    找不到“Test.cshtml”视图。

    错误:找不到视图“Test”或其主视图,或者没有视图引擎支持搜索的位置。
    搜索了以下位置:

    列出的地点包括:

    • ~/Views/SecondGroup/Test.aspx
    • ~/Views/SecondGroup/Test.ascx
    • ~/Views/SecondGroup/123.cshtml

    但位置不正确 "~/Views/SecondGroup/Test/123" ??

    ViewOne。cshtml(由FirstController生成)

    <button onclick= "@("window.location.href ='" + @Url.Action("Test", 
    "SecondController", new { id = "123" }) + "'");">
     GO TO ANOTHER VIEW
    </button>
    

    第二控制器

    public ActionResult Test(string id)
    {           
        return View("Test", id);  // here id = '123'          
    }
    

    测验cshtml

    @model String
    @{    
       Layout = "~/Views/Shared/_Layout.cshtml";
    }
    <div> .... </div>
    

    以下是文件夹结构:

    ---Controllers
         --- HomeController
         --- FirstController
         --- SecondController
    
    -- Views
         --- FirstGroup
             --- ViewOne
    
         --- SecondGroup
             --- Test
    

    为什么? "Test.cshtml" 是否从未找到视图?

    非常感谢。

    1 回复  |  直到 6 年前
        1
  •  3
  •   Kirk Larkin    6 年前

    在您的 Test(string id) 方法,您正在使用 return View("Test", id); 其中使用 this overload 因为 type 属于 id 是一个 string .

    在重载中,第二个参数是 呈现视图时要使用的母版页或模板的名称。

    您需要使用 this overload 其中第二个参数为 object (您的型号)。

    更改代码以强制转换 一串 对象 :

    public ActionResult Test(string id)
    {           
        return View("Test", (object)id);       
    }