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);
}
}
这将允许您将呈现的视图放入字符串并将其传递给客户端。
以上是未经测试的示例代码,请根据您的要求进行修改。