C# 是否接受两个同名参数?
我现在有这个密码了C# 是否接受两个同名参数?,c#,asp.net-mvc-4,parameters,guid,C#,Asp.net Mvc 4,Parameters,Guid,我现在有这个密码了 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.exampl
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
指南
我在路由中有id
,所以别名总是空的
如果我可以这样做就好了(如果参数是Guid或参数是字符串或两者都为Null)
但是我不能有两个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);
}
您可以通过简单地检查输入参数来避免路由问题
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);
}
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);
}