MVC参数返回null值

时间:2018-04-17 05:57:07

标签: asp.net-mvc parameter-passing

以下是控制器代码:

public class HomeController : Controller
{
    //
    // GET: /Home/

    public string Index(string name)
    {
        return "Welcome to MVC_Demo"+name;
    }

}

及以下是 Global.asax.cs 代码:

public class MvcApplication : System.Web.HttpApplication
{
    public static void RegisterRoutes(RouteCollection routes)
    {
        routes.IgnoreRoute("{resource}.axd/{*pathInfo}");

        routes.MapRoute(
            "Default", // Route name
            "{controller}/{action}/{id}", // URL with parameters
            new { controller = "Home", action = "Index", id = UrlParameter.Optional } // Parameter defaults
        );

    }

    protected void Application_Start()
    {
        AreaRegistration.RegisterAllAreas();

        RegisterRoutes(RouteTable.Routes);
    }
}

当我运行应用程序并浏览(http://localhost/MVC_Demo/home/index/pradeep)时,它只显示, "欢迎来到MVC_Demo"作为输出,而不是"欢迎来到MVC_Demo Pradeep"即参数名称" Pradeep"没有显示出来。

考虑到我只是初学者,任何帮助都会受到高度赞赏。

1 个答案:

答案 0 :(得分:2)

根据您的路线说明,默认参数名为id。因此,要么将默认参数名称更改为name,就像这样

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

或者您可以将参数名称更改为id并匹配路线。

public string Index(string id)
{
    return $"Welcome to MVC_Demo {id}";
}

另一个解决方案是将parametername明确指定为QueryString参数:

http://localhost/MVC_Demo/home/index?name=pradeep