asp.net - 使用 Polymer 构建 ASP.NET MVC

标签 asp.net asp.net-mvc asp.net-core polymer-1.0

我已经使用 ASP.NET MVC 和 Polymer 构建了 3 个应用程序,但我总是遇到相同的架构问题。

目前,如果我想将 MVC View 与 Polymer webcomponents 分开,我最终会得到这样的结构:

 - wwwroot
  - bower_components (polymer)
  - elements (my components)
 - View (my views)
 - Controllers (my controllers)

然后,如果我必须解决一个特定的 View ,例如: http://mydomain/home/index我最终会得到类似的东西:

 - Controller > Home
 - Action > Index
 - View > Index.cshtml
 - Element > paper-page-index.html

来 self 的 Index.cshtml

<!-- import the element -->
<link rel="import" href=".../paper-page-index.html" />
<!-- render the element and pass properties -->
<paper-page-index first-name="@Model.FirstName"></paper-page-index>

问题是我必须将我的 ViewModel 的每个属性传递给自定义元素,这变得非常冗长,有时甚至很无聊。 正确的方法应该是什么?每个 .cshtml View 都应该被视为一个 web 组件并停止创建 web 组件本身并将它们包含到我的 .cshtml 页面中?或者我应该像 Martin Fowler 所说的那样有两个 GET 方法:

  • 一个 GET 来检索我的 View (Controller/Action/.cshtml 页面)
  • 一个 GET 从 MVC 检索 ViewModel

此外,我的表示逻辑应该到我的 Polymer 元素中还是到我的 C# ViewModel 中?

有什么线索吗?

最佳答案

最后,我决定以这种方式构建项目:

后端

  • asp.net 核心
  • Controller 公开 REST 方法
  • 使用 asp.net 身份保护

前端

  • “前端 api”的 asp.net 核心
  • Polymer 的标准“静态页面”
  • Polymer View 的标准“元素”结构

“按原样”提供 View ,然后它向“前端”api 询问相应的表示模型。然后,它查询 HTTP REST 端点,以防它需要来自数据存储/lucene 的数据。

这代表了 M. Fowler 的“两步 View ”架构模式,在此处进行了解释:https://martinfowler.com/eaaCatalog/twoStepView.html

优势

  • 我仍然可以使用 ASP.NET Identity 和 OAuth 保护整个前端静态内容
  • 我可以利用 Polymer 构建,因为 Polymer 和 Razor 之间没有严格的关系
  • 我可以将 UI、表示逻辑和业务逻辑完全分为 3 个不同的区域

关于asp.net - 使用 Polymer 构建 ASP.NET MVC,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42347797/

相关文章:

asp.net - Chrome 和 Firefox 中的单页应用程序错误?

c# - 使用 MVC4 asp.net 随机注销

asp.net-mvc - 如何将 ASP.NET MVC 区域创建为插件 DLL?

c# - 如何读取 appSettings 键

asp.net - 当最后一个文件下载 block 发送时,让 IIS 通知 ASP.NET

asp.net - 服务器与开发环境上的 Unicode 字符串比较和 CType 差异

c# - 热衷于从同一解决方案中的另一个项目访问 appsettings.json?

asp.net-core - 基于策略的授权可以更动态吗?

asp.net - 调试时如何处理TransactionScope?

javascript - 单击按钮时面包屑菜单会更新吗?