이 그냥 날 정말, 정말 까다롭게 될 수있다,하지만 난 한 번만 상수를 정의하고자 -
한 가지 방법은 URL을 얻을 자바 스크립트를 사용하는 것입니다 window.location.href
또 다른입니다. 위에 정의 된 접근법 중 하나를 사용하면 활동 상수가 여러 번 정의됩니다.
public class Url
{
public string LocalUrl { get; }
public Url(string localUrl)
{
LocalUrl = localUrl;
}
public override string ToString()
{
return LocalUrl;
}
}
public abstract class Controller
{
public Url RootAction => new Url(GetUrl());
protected abstract string Root { get; }
public Url BuildAction(string actionName)
{
var localUrl = GetUrl() + "/" + actionName;
return new Url(localUrl);
}
private string GetUrl()
{
if (Root == "")
{
return "";
}
return "/" + Root;
}
public override string ToString()
{
return GetUrl();
}
}
를 그런 다음 컨트롤러를 만들 예를 들어 말하는 DataController :
것은이 문제를 방지하려면 다음을 수행 할 수 있습니다
// GET: Data/Cat
[ActionName(ControllerRoutes.DataController.CatAction)]
public ActionResult Etisys()
{
return View();
}
:
public static readonly DataController Data = new DataController();
public class DataController : Controller
{
public const string DogAction = "dog";
public const string CatAction = "cat";
public const string TurtleAction = "turtle";
protected override string Root => "data";
public Url Dog => BuildAction(DogAction);
public Url Cat => BuildAction(CatAction);
public Url Turtle => BuildAction(TurtleAction);
}
그럼 그냥 좋아 사용
.cshtml (또는 다른 코드)
<ul>
<li><a href="@ControllerRoutes.Data.Dog">Dog</a></li>
<li><a href="@ControllerRoutes.Data.Cat">Cat</a></li>
</ul>
이것은 훨씬 더 많은 작업이지만 컴파일 시간 유효성 검사가 편하다고 생각합니다.
도 참조하십시오 : http://stackoverflow.com/q/434604 – Andrew