[asp.net-mvc] ActionName의 목적

“ActionName”속성을 사용하여 작업 메서드의 별칭을 설정하면 어떤 이점이 있습니까? 사용자에게 다른 이름으로 작업 메서드를 호출 할 수있는 옵션을 제공한다는 점에서 그다지 이점이 없다고 생각합니다. 별칭을 지정한 후 사용자는 별칭을 사용해서 만 작업 메서드를 호출 할 수 있습니다. 그러나 이것이 필요한 경우 사용자가 별칭을 지정하는 대신 작업 메서드의 이름을 변경하지 않는 이유는 무엇입니까?

큰 이점을 제공 할 수 있거나 사용하는 것이 가장 좋은 시나리오에서 “ActionName”사용의 예를 제공 할 수 있다면 정말 감사하겠습니다.



답변

번호로 작업을 시작하거나 .net이 식별자에 허용하지 않는 문자를 포함 할 수 있습니다. -가장 일반적인 이유는 동일한 시그니처를 가진 두 개의 작업을 허용하기 때문입니다 (스캐 폴딩 된 컨트롤러의 GET / POST 삭제 작업 참조).

예를 들면 : 당신은 당신의 URL 작업 이름에서 대시를 허용 할 수있는 http://example.com/products/create-producthttp://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’로 사용할 수 있습니다.


답변