“ActionName”속성을 사용하여 작업 메서드의 별칭을 설정하면 어떤 이점이 있습니까? 사용자에게 다른 이름으로 작업 메서드를 호출 할 수있는 옵션을 제공한다는 점에서 그다지 이점이 없다고 생각합니다. 별칭을 지정한 후 사용자는 별칭을 사용해서 만 작업 메서드를 호출 할 수 있습니다. 그러나 이것이 필요한 경우 사용자가 별칭을 지정하는 대신 작업 메서드의 이름을 변경하지 않는 이유는 무엇입니까?
큰 이점을 제공 할 수 있거나 사용하는 것이 가장 좋은 시나리오에서 “ActionName”사용의 예를 제공 할 수 있다면 정말 감사하겠습니다.
답변
번호로 작업을 시작하거나 .net이 식별자에 허용하지 않는 문자를 포함 할 수 있습니다. -가장 일반적인 이유는 동일한 시그니처를 가진 두 개의 작업을 허용하기 때문입니다 (스캐 폴딩 된 컨트롤러의 GET / POST 삭제 작업 참조).
예를 들면 : 당신은 당신의 URL 작업 이름에서 대시를 허용 할 수있는 http://example.com/products/create-product
대 http://example.com/products/createproduct
또는 http://example.com/products/create_product
.
public class ProductsController {
[ActionName("create-product")]
public ActionResult CreateProduct() {
return View();
}
}
답변
동일한 URL을 가져야하는 동일한 서명을 가진 두 개의 작업이있는 경우에도 유용합니다.
간단한 예 :
public ActionResult SomeAction()
{
...
}
[ActionName("SomeAction")]
[HttpPost]
public ActionResult SomeActionPost()
{
...
}
답변
사용자가 보고서를 다운로드 할 때 사용하므로 CSV 파일을 Excel로 직접 쉽게 열 수 있습니다.
[ActionName("GetCSV.csv")]
public ActionResult GetCSV(){
string csv = CreateCSV();
return new ContentResult() { Content = csv, ContentEncoding = System.Text.Encoding.UTF8, ContentType = "text/csv" };
}
답변
이 코드를 시도하십시오.
public class ProductsController
{
[ActionName("create-product")]
public ActionResult CreateProduct()
{
return View("CreateProduct");
}
}
답변
이 클래스는 작업의 이름에 사용되는 속성을 나타냅니다. 또한 개발자가 메서드 이름과 다른 작업 이름을 사용할 수 있습니다.
답변
메서드 오버로딩을 구현해야 할 때도 유용합니다.
public ActionResult ActorView()
{
return View(actorsList);
}
[ActionName("ActorViewOverload")]
public ActionResult ActorView(int id)
{
return RedirectToAction("ActorView","Home");
}
`
여기서 하나의 ActorView는 매개 변수를받지 않고 다른 하나는 int를받습니다. 첫 번째 방법은 배우 목록보기에 사용되며 다른 하나는 ID가 ‘id’인 항목을 삭제 한 후 동일한 배우 목록을 보여주는 방법입니다. 메서드 오버로딩이 필요한 곳이면 어디에서나 액션 이름을 ‘ActorViewOverload’로 사용할 수 있습니다.