4

以下は、jquery 関数にビューを返すコード スニペットですが、ビュー html を抽出または取得してクライアント エンドに戻る方法を知りたいです。

$(function() {
   $('#myddl').change(function() {
       var url = $(this).data('url');
       var value = $(this).val();
       $('#result').load(url, { value: value })
    });
});

<div id="result"></div>

Foo アクション内では、部分ビューを返すことができます。

public ActionResult Foo(string value)
{
    SomeModel model = ...
    return PartialView(model);
}

このようにWebフォームで、ユーザーコントロールまたはHTMLに関連するコントロールを抽出します。

System.Web.UI.Page pageHolder = new System.Web.UI.Page();
BBAReman.facebox.FeedBack ctl = (BBAReman.facebox.FeedBack)pageHolder.LoadControl("~/UserControls/FeedBack.ascx");
System.Web.UI.HtmlControls.HtmlForm tempForm = new System.Web.UI.HtmlControls.HtmlForm();
tempForm.Controls.Add(ctl);
pageHolder.Controls.Add(tempForm);
StringWriter output = new StringWriter();
HttpContext.Current.Server.Execute(pageHolder, output, false);
outputToReturn = output.ToString();

mvcで同じことをする方法。アクションメソッドからビューhtmlを取得する方法を知りたいです。ありがとう

4

3 に答える 3

0

私が理解しているのは、ビューの生の HTML をクライアント側に返す方法が必要だということです。それが必要な場合は、MVC が HTML のレンダリングに使用する ViewEngine を使用する必要があります。

以下はサンプルです:

using (StringWriter sw = new StringWriter())
            {
                ViewEngineResult viewResult = null;

                viewResult = ViewEngines.Engines.FindPartialView(ControllerContext, viewName);

                var viewContext = new ViewContext(ControllerContext, viewResult.View, ViewData, TempData, sw);
                viewResult.View.Render(viewContext, sw);

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

上記のコードは、部分的なビューを見つけて、MVC ビュー エンジンによって HTML 文字列に変換します。

お役に立てれば。

于 2013-08-21T06:11:52.467 に答える