Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
.NET网站:从jQuery获取.ascx的输出_.net_Asp.net_Ajax_User Controls_Ascx - Fatal编程技术网

.NET网站:从jQuery获取.ascx的输出

.NET网站:从jQuery获取.ascx的输出,.net,asp.net,ajax,user-controls,ascx,.net,Asp.net,Ajax,User Controls,Ascx,在MVC.NET应用程序中,我们可以轻松地使用PartialView打印ASCX文件的输出 例如,我有Book.ascx文件,我可以在控制器中有这个文件 public ActionResult Book(int id) { BookModel model = new BookModel() { bookId = id }; return PartialView("Book", model); } 返回Book.ascx的输出 在一个普通的.NET网站上有什么方法可以做到这一点吗 我希望

在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一起使用,例如
单击更新按钮时,将
的内容替换为/Book.ascx?id=123的输出

可能吗

我在找这样的东西

$.get('Book.ascx?id=123', function(data) {
  $("#book123").html(data);
});
但这不起作用,因为您不能直接调用Book.ascx


提前感谢

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


这可能在asp.net文档中得到了最好的描述:

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


这可能在asp.net文档中得到了最好的描述:

好吧,这是可行的,但并不完美:)

您可以实例化控件,而不是通过QueryString传递密钥,而是通过exposed属性:

var ctrl = new BookModel();
ctrl.BookID = "book123";
这样你就可以用类似于

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等

嗯,这是可行的,但并不漂亮:)

您可以实例化控件,而不是通过QueryString传递密钥,而是通过exposed属性:

var ctrl = new BookModel();
ctrl.BookID = "book123";
这样你就可以用类似于

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等

谢谢Sonic Soul。我仍然不知道如何在jQuery中使用它。顺便说一句,BookModel是一个仅在MVC中使用的ViewModel。您可以只为网站使用查询字符串。我添加了一个示例jQuery代码。这是有道理的。在你的主题中,不管你怎么说。ascx控件将与上述解决方案一起工作。是的,你是对的。。。我会编辑它。因此,如果不创建一个新的aspx页面,真的没有办法做到这一点,是吗?我想现在的问题是,我可以将我的aspx转换为aspx,并且仍然能够在其他aspx页面中使用它吗?你知道吗,音速灵魂。您可以创建一个非常基本的aspx页面,它将是ascx的容器,并且仅用于MVC需求。(同样,我对MVC的了解是有限的,所以我不能肯定这个实现,但似乎是可行的选择)感谢Sonic Soul。我仍然不知道如何在jQuery中使用它。顺便说一句,BookModel是一个仅在MVC中使用的ViewModel。您可以只为网站使用查询字符串。我添加了一个示例jQuery代码。这是有道理的。在你的主题中,不管你怎么说。ascx控件将与上述解决方案一起工作。是的,你是对的。。。我会编辑它。因此,如果不创建一个新的aspx页面,真的没有办法做到这一点,是吗?我想现在的问题是,我可以将我的aspx转换为aspx,并且仍然能够在其他aspx页面中使用它吗?你知道吗,音速灵魂。您可以创建一个非常基本的aspx页面,它将是ascx的容器,并且仅用于MVC需求。(同样,我对MVC的了解是有限的,所以我不能肯定这个实现,但似乎是可行的选择)感谢hjortureh,但我仍然不确定如何在AJAX中使用它。我更新了问题,加入了我想要的代码。谢谢hjortureh,但我仍然不知道如何在AJAX中使用它。我更新了问题,加入了我想要的代码。