Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/319.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 具有可选Guid参数的视图的MVC控制器方法_C#_Asp.net Mvc - Fatal编程技术网

C# 具有可选Guid参数的视图的MVC控制器方法

C# 具有可选Guid参数的视图的MVC控制器方法,c#,asp.net-mvc,C#,Asp.net Mvc,我试图让MVC视图可以直接从菜单进入该视图,或者通过单击链接进入同一视图,但带有参数和特定链接信息,而不是直接进入常规页面 public ActionResult Roles(Guid applicationId) { if (applicationId == Guid.Empty) { return View(); } var application = new ApplicationStore(

我试图让MVC视图可以直接从菜单进入该视图,或者通过单击链接进入同一视图,但带有参数和特定链接信息,而不是直接进入常规页面

public ActionResult Roles(Guid applicationId)
    {
        if (applicationId == Guid.Empty)
        {
            return View();
        }

        var application = new ApplicationStore().ReadForId(applicationId);

        return View(application);
    }

我知道对于可选参数,我会做一些类似Guid的事情?在参数中,但visual Studio不喜欢这样,而且我也不能执行Guid application=null。有什么想法吗?

您可以将Guid参数更改为string。 Guid.Empty=00000000-0000-0000-0000-000000000000,在尝试传递空值时可能会导致问题。 如果您将其切换为类似以下内容,但仍使用Guid:

public ActionResult Roles(string applicationId)
{
    if (string.IsNullOrEmpty(applicationId))
    {
        return View();
    }

    var application = new ApplicationStore().ReadForId(applicationId);

    return View(application);
}

它可能会避开您遇到的错误。

您可能只需将Guid参数更改为字符串即可。 Guid.Empty=00000000-0000-0000-0000-000000000000,在尝试传递空值时可能会导致问题。 如果您将其切换为类似以下内容,但仍使用Guid:

public ActionResult Roles(string applicationId)
{
    if (string.IsNullOrEmpty(applicationId))
    {
        return View();
    }

    var application = new ApplicationStore().ReadForId(applicationId);

    return View(application);
}

它可能会避开您遇到的错误。

如您所述,将参数设置为可选参数

public ActionResult Roles(Guid? id) {
    if (id == null || id.Value == Guid.Empty) {
        return View();
    }

    var application = new ApplicationStore().ReadForId(id.Value);

    return View(application);
}
这也假定默认的基于约定的路由

"{controller}/{action}/{id}"
其中,id在路由模板中是可选的

id = UrlParameter.Optional
比如说

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

如前所述,将参数设置为可选

public ActionResult Roles(Guid? id) {
    if (id == null || id.Value == Guid.Empty) {
        return View();
    }

    var application = new ApplicationStore().ReadForId(id.Value);

    return View(application);
}
这也假定默认的基于约定的路由

"{controller}/{action}/{id}"
其中,id在路由模板中是可选的

id = UrlParameter.Optional
比如说

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