接受两个同名的参数



我现在有这个代码了

public ActionResult Index(Guid? id, string alias)
{
    var room = db.Rooms.FirstOrDefault(r => r.RoomLink == id || r.Alias == alias);
    if (room != null)
    {
    //some code with room...
    }
}

我的目标是在我的操作中接受两种 url(参数(。

字符串

www.example.com/Rooms/Aliasstring

吉德

www.example.com/Rooms/387ecbbf-90e0-4b72-8768-52c583fc715

我在路由中有id,所以别名总是空。

如果我能这样做会很好(如果参数是 Guid 或参数是字符串或两者都为 Null(

public ActionResult Index(Guid? id, string? id)
{
    var room = db.Rooms.FirstOrDefault(r => r.RoomLink == id || r.Alias == id);
}

但是我不能有两个id作为参数。

路线

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

我的模型

public Guid RoomLink { get; set; }
public string Alias { get; set; }

您可以通过简单的检查输入参数来避免路由问题

public ActionResult Index(string input)
{
    Guid guidOutput;
    bool isId = Guid.TryParse(input, out guidOutput);
    bool isAlias = !isId;
   var room = isId ?
              db.Rooms.FirstOrDefault(r => r.RoomLink == input) :
              db.Rooms.FirstOrDefault(r => r.Alias == input);
}

相关内容

  • 没有找到相关文章

最新更新