【问题标题】:Query String Parameter used as View Name用作视图名称的查询字符串参数
【发布时间】:2016-12-09 09:36:12
【问题描述】:

我有一些这样的代码

public ActionResult BookNav(string activeId)
{
    return PartialView(activeId);
}

并尝试对该操作进行 Ajax 调用。我使用

形成回调URL
@Url.Action("BookNav", "Home", new { activeId = "navHome" })

生成 URL

http://localhost:7268/Home/BookNav?activeId=navBios

我在回调期间收到 HTTP 500。为了简化问题,我在浏览器中打开了一个新选项卡并粘贴了该 URL。结果是:

The partial view 'navBios' was not found or no view engine supports the searched locations. The following locations were searched:
~/Views/Home/navBios.aspx
~/Views/Home/navBios.ascx
...

但是,如果我粘贴没有查询字符串参数的 URL

http://localhost:7268/Home/BookNav

我得到了预期的输出。

为什么我的查询字符串中的值被用来选择视图名称,我该如何解决?

【问题讨论】:

    标签: asp.net-mvc asp.net-mvc-5


    【解决方案1】:

    您将字符串传递给return PartialView(),它使用需要视图名称(string)作为其参数的重载。您需要将参数作为对象传递

    public ActionResult BookNav(string activeId)
    {
        return PartialView((object)activeId);
    }
    

    【讨论】:

    • 天啊!我对没有找到 BookNav 本身而不是视图的想法感到困惑。谢谢!
    猜你喜欢
    • 2013-08-03
    • 1970-01-01
    • 2013-02-06
    • 1970-01-01
    • 1970-01-01
    • 2011-10-25
    • 1970-01-01
    • 1970-01-01
    • 2022-11-18
    相关资源
    最近更新 更多