【问题标题】:Replace @RenderBody in ASP MVC application在 ASP MVC 应用程序中替换 @RenderBody
【发布时间】:2015-12-09 11:19:08
【问题描述】:

我有一个基于 ASP MVC 和 AngularJS 的 Web 应用程序。我的母版页:

...
<body ng-app="myApp">
  <div id="navBar">...</div>

  <section class="content-wrapper">
     @RenderBody()
  </section>

  <div id="footer">...</div>
</body>

我的应用可以在网络上运行,但现在需要在移动设备上运行。我的方法是使用 Cordova,所以我需要完全独立的前端到后端。所以我必须删除对剃刀的任何引用。那么,如何在没有@RenderBody 的情况下呈现我的部分视图?我有什么误解吗?

更新:

为了使用 Cordova,我编写了一个带有移动框架的轻量级应用程序,将 kendo 移动版具体化。但是这个移动应用的本质是一样的。我有一个母版页,可以在其中呈现部分视图。为此,我只知道使用@RenderBody。这就是问题所在,因为 Cordova 项目需要将前端和后端完全分离,即我必须删除 @renderBody,不是吗?

关于我如何在控制器中呈现部分视图,这是一个愚蠢的例子:

public class MobileController : Controller
{
    [AllowAnonymous]
    public ActionResult MobileIndex()
    {
        return View();
    }
    [AllowAnonymous]
    public ActionResult Home()
    {
        return PartialView();
    }
    [AllowAnonymous]
    public ActionResult Settings()
    {
        return PartialView();
    }
    [AllowAnonymous]
    public ActionResult Search()
    {
        return PartialView();
    }
}

【问题讨论】:

  • 您的问题很难理解。 “在网络上工作,但现在需要在移动设备上工作” - 好的,然后添加媒体查询(或实现这些的框架,如 Bootstrap)。 “我的方法是使用 Cordova” - 好的,你是如何将它结合起来的?您的意思是您正在编写一个应该显示此 Web 应用程序的 Cordova“webview”应用程序? “所以我必须删除对 razor 的任何引用” - 哦? “我如何渲染我的局部视图” - 这取决于你如何从控制器渲染它们...

标签: asp.net-mvc cordova razor partial-views


【解决方案1】:

对于您的 Web 应用程序,您可以将 AngularJS 与 ASP.NET 混合使用,就像您所做的那样。

对于您的本机应用程序(使用 Cordova),您有两种解决方案。第一个是使用inAppBrowser plugin 并导航到您的网络应用程序。结果不会很干净,但它可以工作。另一种解决方案(更好)是完全用 AngularJS(或其他前端 fwk)编写您的应用程序,而不使用服务器渲染(如 ASP.NET)。由于您的应用程序资源(*.html、*.css、*.js)将直接包含在本机应用程序中(Cordova 会为您执行此操作),因此您必须拥有即用型资源。

够清楚了吗?

【讨论】:

  • 我绝对使用第二种方法。我很清楚,我的移动应用程序完全是用 angular + kendo mobile、html 和 css 编写的,除了当我调用控制器来呈现视图时,我使用 @renderBody 因为我不知道其他方式。
  • 如果使用第二种方法,则不能使用renderBody(因为当文件嵌入到Cordova 应用程序中时,renderBody 将不再起作用)。相反,您必须从服务器返回纯 html 文件,然后使用客户端模板解决方案(如 AngularJS 提供)来生成您的内容
  • 如果这个答案解决了你的问题,你能把它标记为已回答吗?
  • 我已经很清楚我已经用 Angular 重写了我的应用程序。我在问如何避免在 asp mvc Web 应用程序上使用典型的 @renderBody。
  • 好的,现在,你的审讯是什么?如果您已经知道正确答案,我真的不明白您提出问题的目的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多