代码之家  ›  专栏  ›  技术社区  ›  MyDaftQuestions

MVC不会将参数识别为参数,而是将其视为视图

  •  0
  • MyDaftQuestions  · 技术社区  · 6 年前

    我有一个ASP。NET MVC网站。我遇到的问题是,如果添加查询字符串,它将无法渲染视图

    我的控制器是

    public class UpgradeController : Controller
    {
        public ActionResult Index(string id)
        {
            return View(id);
        }
    }
    

    就这么简单

    如果我导航到

    localhost:123456/upgrade/index
    

    然后 view 按预期在浏览器中渲染。

    正如您在 controller 这个 看法 Index 接受名为 id

    这意味着以下URL将返回相同的视图

    localhost:123456/upgrade/index/abc
    

    遗憾的是,它没有呈现预期的 看法 。相反,我明白了

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

    以下URL也是如此

    http://localhost:53081/upgrade/index?id=abc
    

    我只有一条路线

    routes.MapRoute(
                name: "Default",
                url: "{controller}/{action}/{id}",
                defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
            );
    

    我完全搞不懂为什么它试图渲染视图并将其视为参数

    0 回复  |  直到 6 年前
        1
  •  1
  •   Hari Lubovac    6 年前

    尝试从此行中删除id参数

        return View(id)
    

    并使用不同的方法将其传递给视图(如果您需要)。看见 https://www.c-sharpcorner.com/UploadFile/abhikumarvatsa/various-ways-to-pass-data-from-controller-to-view-in-mvc/

    将字符串值传递给View方法显然有不同的意图:没有它,视图文件的名称就隐含在操作方法的名称中,而有了它,您就可以灵活地加载所需的任何视图。

        2
  •  0
  •   MyDaftQuestions    6 年前

    这就是我实际做的

    public ActionResult Index(string id)
    {
        return View(model:id);
    }
    
    推荐文章