2017-11-02 5 views
2

컨트롤러에서 HtmlHelper 객체를 반환하는 방법이 있습니까? 코드에서MVC - 컨트롤러 내용 (함수) 인수로 HtmlHelper 객체 보내기?

:

컨트롤러 :

public ActionResult SomeFunc(int id) 
    { 
     if (condition) 
      return Content();//here i would like to send Html.ActionLink("Text", "Action") 
     else 
      return Content(); 
    } 

이 링크는 자바 스크립트 처리 얻을 것이다 :

 $.get("", { id: $("#id").val() }). 
    done(function (data) { 
     if (data != 0) { 
      $("#someDOMID").val(data); 
     } 
    }); 
+0

가장 쉬운 방법은 부분 뷰를 만들고 클라이언트 측에서 Ajax를 통해 소비하는 것이지만 액션 메소드에서 도우미를 사용하여 HTML을 반환하는 것이 가능하다고 생각합니다. – derloopkat

+0

거기에 서버 로직을 생성하기 위해 어떤 링크를 – shdr

+0

부분보기 생성이 코드를 포함 할 수 desining해야하거나 컨트롤러에 넣고 ViewBag 또는 모델 전달 – derloopkat

답변

1

만 전송해야하는 경우 귀하의 질문에 언급 된 링크 :

그렇지 않으면 Partial View 방식을 사용하는 것이 좋습니다.

2

는 내용이 원시 HTML 문자열을 포함하려면 문자열 서버 측에 부분을 렌더링하고 반환하는 함수를 만들 수 있습니다.

그런 다음 다른 단계를 수행하고 이 포함 된 일반 ActionLinkPartial을 만들고 동작 링크 구성 설정이있는 모델을 수락 할 수 있습니다.

뭔가 같은 ...

protected string RenderPartialViewToString(string viewName, object model) 
    { 
     if (string.IsNullOrEmpty(viewName)) 
      viewName = ControllerContext.RouteData.GetRequiredString("action"); 

     ViewData.Model = model; 

     using (StringWriter sw = new StringWriter()) 
     { 
      ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName); 
      ViewContext viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw); 
      viewResult.View.Render(viewContext, sw); 

      return sw.GetStringBuilder().ToString(); 
     } 
    } 

그리고 같은 모델을 사용 ...

public class ActionLinkModel 
{ 
    public string Text{get;set} 
    public string Action{get;set;} 
} 

같은 그것을 호출 ...

var html = this.RenderPartialViewToString("Partials/Html/ActionLinkPartial", model); 
관련 문제