【问题标题】:Asp.net MVC Routing w/ string parameter带字符串参数的 Asp.net MVC 路由
【发布时间】:2017-11-03 15:41:38
【问题描述】:

我正在学习asp.net,有一段时间不能解决一个比较简单的问题。

拥有包含以下内容的 RouteConfig.cs 文件:

public class RouteConfig {
    public static void RegisterRoutes(RouteCollection routes) {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapMvcAttributeRoutes();

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

并获得了带有内容的控制器:

...
[Route("image/show/{uuid}")]
public ActionResult Show(string uuid) {
    return View(uuid);
}
...

And the result when I try to open this url

提前感谢您的回复!

【问题讨论】:

  • 在属性路由中没有找到你接受的路径。
  • 好的,但这是为什么呢?如果我将 Show fn-s 参数更改为 int,即:Show(int uuid)。然后相同的 url - 当然最后带有一个数字作为参数 - 可以正常工作,并且路由很好。所以在我看来问题的根本原因是参数类型是字符串...

标签: c# asp.net asp.net-mvc-4 routing


【解决方案1】:

这是您的下一行创建问题

return View(uuid);

这一行采用控制器的 ViewResult View(string viewName) 重载。它会将您传入的 uuid 变量视为视图名称,并尝试使用该名称查找视图文件。

作为一种解决方法,您可以将该行更改为

return View((object)uuid);

这将采取正确的重载 ViewResult 视图(对象模型) 或将 uuid 存储在 viewbag 中并将视图返回为

return View();

当然,你的 View/Image 目录中仍然需要 Show.cshtml 文件。

【讨论】:

    【解决方案2】:

    错误提示在 Views/Images/sdfsd.cshtml 中找不到 cshtml 文件。

    添加该文件,它应该可以工作

    【讨论】:

      猜你喜欢
      • 2014-09-22
      • 1970-01-01
      • 1970-01-01
      • 2011-09-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-10-02
      相关资源
      最近更新 更多