2017-11-02 8 views
2

コントローラから表示するHtmlHelperオブジェクトを返す方法はありますか?コードでMVC - コントローラのコンテンツ(関数)引数でHtmlHelperオブジェクトを送信しますか?

コントローラ:あなたはコンテンツは、生のHTML文字列を含むようにしたい場合は

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

部分ビューを作成し、クライアント側からAjaxを介して消費するのが最も簡単ですが、アクションメソッドでヘルパーを使用してそこからHTMLを返すことは可能だと思います。 – derloopkat

+0

サーバロジックは、 – shdr

+0

部分的なビューを生成するためにこのコードを埋め込むか、コントローラに入れてViewBagまたはモデルを渡すかを決定する必要があります – derloopkat

答えて

1

あなただけ送信する必要がある場合あなたの質問に記載されているリンクを次に試してください:

public ActionResult GetLink() 
{ 
    string url = Url.Action("Index", "Home", new { id = 1 }); 
    return Content(url); 
} 

それ以外の場合は、パーシャルビューアプローチを使用する方がよいでしょう。

2

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

リンクはJavaScriptで扱う取得します文字列サーバサイドに部分をレンダリングして返す関数を作成することができます。

別の手順を踏んで、ActionLinkPartialという一般的なものを作成して、@Html.ActionLinkを埋め込み、アクションリンクの構成設定を持つモデルを受け入れることができます。

のような何か...

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); 
関連する問題