2013-05-27 3 views
2

아마도 중복 될 수 있지만 MVC View .cs 파일에서 메서드를 작성하는 방법을 이해할 수 없으므로 cshtml 파일에서 @ Html.ActionLink와 동일한 것을 반환하도록 호출 할 수 있습니다. 등을HTML 소파에서 @ Html.ActionLink를 반환하는 MVC Controller 메서드 구문은 무엇입니까?

종류 :

그것에 대해 갈거야, 그래서 만약 내가, MVC 컨트롤러에서 다른보기 페이지의 무리에 일부 ActionLinks와 같은 HTML 구조를 반환되어 수행 할 작업을
public string BrowseMenu 
{ 
    return "<div><p>" + Html.ActionLink(" linktext ", "Action", "Controller") + "</p></div>"; 
} 

전체 잘못된 길, 그 곳으로 가려고합니다.

+0

노트를 통해보기에서이 사용자 정의 HTML 도우미를 렌더링 할 수 .microsoft.com/ko-kr/library/system.web.mvc.htmlhelper (v = 108) .aspx)는 HtmlHelpers가 [MVC] 컨트롤러 또는 모델에서 사용하기에 적절하지 않다고 언급하며 이는 단지 의미가 있어야합니다. – stackuser83

답변

3

일부 html을 렌더링하려면 컨트롤러에서 ActionResult을 반환해야 볼 수 있습니다. 그렇지 않으면 view는 문자열을 받고 그대로 표시합니다.

HTML을 보유하고있는 부분 뷰를 정의 할 수 있으며이 부분 뷰를 기본 뷰에서 렌더링 할 수 있습니다.

public PartialViewResult MyActionLink() 
{ 
    return PartialView("_MyPartialView"); 
} 

_MyPartialView은 렌더링하려는 html을 포함하는보기 파일 일뿐입니다.


그러나 나는 깨끗한 해결책이라고 생각하는 맞춤 html 도우미를 작성하는 것이 좋습니다. // MSDN :

public static string MyActionLink(this HtmlHelper helper) 
{ 
    StringBuilder sb = new StringBuilder(); 
    sb.Append("<div><p>"); 
    sb.Append(helper.ActionLink("Text","Action","Controller")); 
    sb.Append("</p></div>") 
    return sb.ToString(); 
} 

그런 다음 당신은 MSDN Html 헬퍼 클래스 페이지 [system.web.mvc.htmlhelper]의 비고란 (HTTP

@Html.MyActionLink() 
+0

당신이 제안하는 사용자 정의 html 도우미가 확실히 노력하고있는 것보다 낫다. MVC 뷰에서 접근성을위한 메소드를 코딩 할 곳을 찾을 수 없다. – stackuser83

+0

그냥 새 클래스를 만들고 이 방법을 거기에 추가하십시오. 여기에서 예제를 찾을 수 있습니다. http://develoq.net/2011/how-to-create-custom-html-helpers-for-asp-net-mvc-3-and-razor-view-engine/ –

+0

VS2012 magic! 정확히 내가 옳지 않은 것, 아마도 클래스 이름 또는 네임 스페이스가 무엇인지 확신 할 수 없습니다. 무리 감사! – stackuser83

관련 문제