MVC は、文字列へのビューをネイティブにサポートしていません。単にそれを返します。ただし、これを許可するメソッドを使用して、カスタム コントローラーを作成できます。私はこのコードをインターウェブのどこかで拾いました - どこか思い出せません - それは素晴らしい仕事をします.
public class ExtendedController : Controller
{
public string RenderPartialView(string viewName, object model)
{
if (string.IsNullOrEmpty(viewName))
viewName = this.ControllerContext.RouteData.GetRequiredString("action");
this.ViewData.Model = model;
using (var sw = new StringWriter())
{
ViewEngineResult viewResult = ViewEngines.Engines.FindPartialView(this.ControllerContext, viewName);
var viewContext = new ViewContext(this.ControllerContext, viewResult.View, this.ViewData, this.TempData, sw);
viewResult.View.Render(viewContext, sw);
return sw.GetStringBuilder().ToString();
}
}
}
そして、コントローラーを次のように作成します
public class MyController : ExtendedController
{
public ActionResult MyAjaxOp()
{
List<int> MyList = new List<int>(); // Populate the list as required
object MyHelperModel = new object(); // View Model as required
object rtn = new { html = RenderPartialView("MyHelperView", MyHelperModel), list = MyList}
return Json(rtn, JsonRequestBehavior.AllowGet);
}
}
これにより、レンダリングされたビューを文字列に配置し、それをクライアントに渡すことができます。
上記はテストされていないサンプル コードなので、必要に応じて変更してください。