gpt4 book ai didi

c# - MVC 从另一个 MVC 应用程序渲染 (RenderPartial, RenderAction) Html

转载 作者:行者123 更新时间:2023-11-30 13:51:55 25 4
gpt4 key购买 nike

我工作的环境中有许多负责页面上特定内容的团队。每个团队都在共享特定信息(公共(public)类库和母版页),每个团队都将交付不同类型的内容。

MVC 应用程序是否可以执行类似于 RenderPartial 的操作并将模型传递给另一个 MVC 应用程序 Controller/Action 以返回内容?

因此,此代码可能如下所示:( http://www.mydomain.com/Home/Index )

<% Html.RenderAction("ads.mydomain.com", "Home", "Index", AdModel) %>

也许这不是一个好主意,因为另一个线程必须启动以向服务器提供部分 View ?

最佳答案

不,RenderPartial/RenerAction 只能加载它可以通过反射访问的 View ,而不是通过对外部资源的 HTTP 请求。

如果“ads.mydomain.com”的 MVC 应用程序在编译时可供您使用,那么您可以通过区域使用它的资源,但是如果他们向“广告”发布新版本,它不会获取更改。 mydomain.com' 网站,而无需您获取他们的最新程序集并重新编译和部署您的应用程序。

你可以用 AJAX 做类似的事情,你可以从另一个站点加载一个片段,但是它不会在服务器端完成,并且需要客户端启用 javascript。此外,该模型需要转换为 JSON 并发布到请求中,因此这是一个有点老套的解决方案。

您可以编写一个扩展方法(我们称之为 Html.RenderRemote),它会为您完成创建到目标的 http 连接并请求 URL 的所有工作。您必须序列化模型并将其作为请求的一部分发送。

public static string RenderRemote(this HtmlHelper, string url, object model)
{
// send request to 'url' with serialized model as data
// get response stream and convert to string
// return it
}

您可以将其用作:

<%= Html.RenderRemote('http://ads.mydomain.com', Model');

您将无法利用远程域上的路由,因此您必须自己构建文字 URL,这意味着如果他们更改您的路由规则,您的 URL 将不再有效。

关于c# - MVC 从另一个 MVC 应用程序渲染 (RenderPartial, RenderAction) Html,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3680695/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com