2012-02-22 51 views
1

我有一个ASP.NET MVC应用程序的局部视图:有没有一种干净的方式来在剃刀视图中嵌入网址?

@Html.Partial("_Comments", Model) 

我想使这部分的一个“插件”,可以从其他应用程序调用。所以,我在我的控制器中创建一个单独的行动来回报独此局部视图:

public ActionResult Embed() 
{ 
    return View("_Comments", new CommentsModel()); 
} 

这个动作就可以通过URL [根] /评论/嵌入访问和返回的局部视图的HTML。

有没有一种干净的方式来嵌入从一个单独的MVC剃刀视图(在一个完全不同的应用程序)这个URL的响应?

谢谢!

回答

0

我找到了解决方案。

@Html.Raw(new WebClient().DownloadString("[root]/Comments/Embed")) 
+0

这是有点可怕的观点代码...也许弹出一个HTMLhelper吸盘 – dotjoe 2012-02-22 22:16:58

+0

什么吓到你这个代码?我正在寻找一种解决方案,我的同事可以轻松实现,无需包含或编写太多额外的代码。 – Paul 2012-02-22 22:19:23

+0

,因为它正在服务器上下载......如果该网站发生故障,那么该页面(除非设置较短的超时)。我更喜欢ajax解决方案。 – dotjoe 2012-02-22 23:35:15

2

Is there a clean way to embed the response from this URL in a separate MVC razor view (in an entirely different app)?

这意味着客户端代码,例如:

function getComments() { 
    $.ajax({ url: '[root]/Comments/Embed', 
      iframe: true, 
      success: function (data) { 
     $("#target-id").html(data); 
    } 
    }); 
} 

编辑

如果你使用this ajax plugin,如果设置
iframe: true
则访问由跨域iframe透明度

+0

我已经尝试过这种方法,才来到stackoverflow。这对跨域请求有问题。我得到的错误:'Origin http:// localhost:42347不被Access-Control-Allow-Origin所允许。' – Paul 2012-02-22 21:16:49

+0

如果可能的话,我想避免使用iframe。我用'JSONP'试了几件事。只要得到响应,但由于它不是JSON,它会引发解析错误。 – Paul 2012-02-22 21:31:25

+0

哪个插件是在该页面上? – Paul 2012-02-22 21:41:19

相关问题