参数未被视为参数 - 可能的路由问题

时间:2016-01-26 13:04:14

标签: c# .net asp.net-mvc visual-studio-2013

以下网址

http://localhost:53130/Quote/FindCustomer?f=0

给了我

  

视图' 0'或者找不到它的主人或没有视图引擎支持   搜索到的位置。搜索了以下位置:   〜/ Views / Quote / 0.aspx~ / Views / Quote / 0.ascx~ / Views / Shared / 0.aspx   〜/ Views / Shared / 0.ascx~ / Views / Quote / 0.cshtml~ / Views / Quote / 0.vbhtml   〜/ Views / Shared / 0.cshtml~ / Views / Shared / 0.vbhtml

但它没有f参数。

动作代码如下所示:

public ActionResult FindCustomer(string f = "")
{
    return View(f);
}

之前发生过类似事情,但我从来没有想过为什么。

我需要做些什么才能让它识别出f是一个参数?

[编辑]

正如答案所示,我将参数作为视图名称传递,而不是我想的模型。

以下解决了这个问题:

return View(model: f);

2 个答案:

答案 0 :(得分:4)

您的错误原因是return View(f);。如果您未向方法提供参数,则该参数为return View("");,默认情况下与return View();相同。然后映射到方法的名称,或return View("FindCustomer");

您显示的错误消息完美地解释了问题。使用您提供的URL“?f = 0”,您告诉它查找名为“0.cshtml”的视图,该视图不存在。

答案 1 :(得分:3)

由于您将字符串值传递给视图,因此MVC将其视为视图名称,因此它尝试在异常消息中指定的路径中查找相应的文件。

如果只需将此值作为参数传递给默认命名视图,则可以使用ViewBag执行此操作:

public ActionResult FindCustomer(string f = "")
{
    ViewBag.f = f;
    return View();
}