1

在 MVC .NET 应用程序中,我们可以轻松地使用 PartialView 打印 ASCX 文件的输出。

例如,我有 Book.ascx 文件,我可以在控制器中有这个

public ActionResult Book(int id)
{
  BookModel model = new BookModel() { bookId = id };
  return PartialView("Book", model);
}

它返回 Book.ascx 的输出

有什么方法可以在普通的 .NET 网站上做到这一点?

我希望能够将它与 AJAX 一起使用,例如。
单击更新按钮时,将 的内容替换<div id="book123">为 /Book.ascx?id=123 的输出

那可能吗?

我正在寻找这样的东西

$.get('Book.ascx?id=123', function(data) {
  $("#book123").html(data);
});

但这不起作用,因为您不能直接调用 Book.ascx ......

提前致谢

4

2 回答 2

1

好吧,这是可行的,但不漂亮:)

您可以实例化您的控件,而不是通过 QueryString 传递密钥,而是通过暴露的属性来实现:

var ctrl = new BookModel();
ctrl.BookID = "book123";

比你可以用类似的东西渲染HTML

private string renderControl(Control ctrl)
{
  System.Text.StringBuilder sb = new System.Text.StringBuilder();
  System.IO.StringWriter tw = new System.IO.StringWriter(sb);
  System.Web.UI.HtmlTextWriter hw = new System.Web.UI.HtmlTextWriter(tw);
  ctrl.RenderControl(hw);
  return sb.ToString();
}

比您通过您的服务将该 html 传回并插入到 div 等中。

于 2010-06-23T00:52:02.270 回答
0

它不可能在 asp.net 表单页面中使用部分视图。但是您可以使用用户控件 (.ascx) 的传统方式。

这可能在 asp.net 文档中得到了最好的描述:http: //quickstarts.asp.net/QuickStartv20/aspnet/doc/ctrlref/userctrl/default.aspx

于 2010-06-23T00:33:35.617 回答