Что касается тестирования, прочитайте ссылку, приведенную в комментариях выше , но я бы порекомендовал почитать MVC Routing или здесь , он делает именно то, что выпытаются достичь.
Загляните в свой файл global.ascx.cs, вы найдете что-то вроде этого:
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
);
Это готовый маршрут для инфраструктуры MVC.
Маршруты будут соответствовать URL-адресу в соответствии с соглашением, которое вы им дали.
Таким образом, на основе маршрута по умолчанию, приведенного выше, и с URL-адресом, подобным следующему:
http://localhost:portnumber/MyController/MyAction/8B4B93DE-76CA-4552-B4AA-460400761EAD
Этопопытается сопоставить этот URL с контроллером MyController с действием MyAction, которое получает и Id.Это действие будет выполнено только в том случае, если все критерии соответствуют.
Если в URL нет идентификатора, а идентификатор, определенный в вашем методе действия, не имеет типа null, то он просто не будет выполняться.Он скорее попытается сопоставить другой URL, если он не может найти тот, который даст 404.
Примерно так:
public class MyController : Controller {
[HttpGet]
Public ActionResult MyAction(Guid id)
{
}
}