gpt4 book ai didi

asp.net-mvc - ASP.NET Web 架构设计 - 第 2 部分

转载 作者:行者123 更新时间:2023-12-04 07:10:35 25 4
gpt4 key购买 nike

我实际上已经在 this post 中询问过这个问题尽管我们回到了绘图板,发现它比我们最初想象的要困难得多。我们开发了一个大型(并且非常依赖)Intranet 系统,该系统多年来发展迅速。

问题在于它使用框架在左侧有一个菜单,在顶部有一个标题,然后是主页。这样做是为了确保其他元素是静态的,同时您可以滚动页面。现在我们已经想出了一个使用单个页面和 CSS 来实现这一点的解决方案,但问题在于我们的 Web 应用程序的实际架构。

我们想要转移到 MVC 架构以使我们的页面更​​安全和更易于管理,但是这存在一个主要问题。我们内联网系统的每个部分都有指向其他部分中其他页面的交叉链接。因此,例如,假设我们有一个名为“游戏”的部分,其中有一个名为“人们玩游戏”的部分,但这实际上只是使用一个框架来指向位于我们 Intranet 系统上另一个文件夹中的页面,称为“人员”然后是“People.aspx”(一个纯粹的例子)。 MVC 架构将如何处理这样的事情?

我们在 Intranet 的完全不同区域显示的页面实际上是同一页面。所以有一个像 http://mysite/section/category/page 这样的 URL必须链接到 http://mysite/anothersection/differentcategory/page .

希望这对具有 MVC 架构经验以及过时架构(例如我们正在使用的框架)的人有意义。

提出的问题是:

  • 我们必须有重复的页面吗?
  • 有没有办法使用 MVC 交叉引用不同部分中的页面?
  • 对于由大约 400 个不同页面组成的 Intranet 系统,MVC 是要走的路吗?

  • 干杯

    最佳答案

  • 您不必这样做,就像复杂类型背后的想法一样。您可以将最小 View 放入完整的 View 中以分离重复。
  • 您可以使用 Html.ActionLink 创建指向页面的链接,并且可以使用 Html.RenderPartial 或 Html.RenderAction 将整个操作呈现到您的页面中。
  • 当然。就像我说的,您可以将重复分解为小组件,并在需要时包含它们。

  • 例如...

    我正在为 friend 开发一个小型店面应用程序,我发现自己创建了一个用于添加和编辑产品的 View 。问题是——我对字段使用了相同的布局。所以我创建了一个 MVC 用户控件并放入字段中并执行了类似的操作。

    对于添加..
    <asp:Content ID="DefaultContent" ContentPlaceHolderID="DefaultContentPlaceHolder" runat="server">
    <% Html.BeginForm<CatalogController>(c => c.AddProduct(null), FormMethod.Post); %>
    <% Html.RenderPartial("ProductFields", ViewData); %>
    <%= Html.SubmitButton("Submit", "Add") %>
    <% Html.EndForm(); %>
    </asp:Content>

    而对于编辑...
    <asp:Content ID="DefaultContent" ContentPlaceHolderID="DefaultContentPlaceHolder" runat="server">
    <% Html.BeginForm<CatalogController>(c => c.EditProduct((Product)null), FormMethod.Post); %>
    <% Html.RenderPartial("ProductFields", ViewData); %>
    <%= Html.Hidden("Product.ID", ViewData.Model.ID) %>
    <%= Html.SubmitButton("Submit", "Save") %>
    <% Html.EndForm(); %>
    </asp:Content>

    而 ProductFields 部分看起来像这样
    <% Product product = ViewData.Model; %>
    <% IEnumerable<Category> categories = ViewData["Categories"] as IEnumerable<Category>; %>
    <table>
    <tr>
    <td><%= Html.Label("Product.Name", "Name") %></td>
    <td><%= Html.TextBox("Product.Name", product.Name) %></td>
    </tr>
    <tr>
    <td><%= Html.Label("Product.Price", "Price") %></td>
    <td><%= Html.TextBox("Product.Price", product.Price) %></td>
    </tr>
    <tr>
    <td><%= Html.Label("Product.Description", "Description") %></td>
    <td><%= Html.TextBox("Product.Description", product.Description) %></td>
    </tr>
    <tr>
    <td><%= Html.Label("Product.IsActive", "Is active") %></td>
    <td><%= Html.CheckBox("Product.IsActive", product.IsActive) %></td>
    </tr>
    <tr>
    <td><%= Html.Label("Product.IsFeatured", "Is featured") %></td>
    <td><%= Html.CheckBox("Product.IsFeatured", product.IsFeatured.HasValue ? product.IsFeatured.Value : false) %></td>
    </tr>
    <tr>
    <td><%= Html.Label("Product.CategoryID", "Category") %></td>
    <td><%= Html.DropDownList("Product.CategoryID", new SelectList(categories, "ID", "Name")) %></td>
    </tr>
    </table>

    因此,如您所见,您可以根据需要轻松地拆分页面并包含它们,并使用 ASP.NET MVC 非常轻松地将数据传递给它们。

    关于asp.net-mvc - ASP.NET Web 架构设计 - 第 2 部分,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/439307/

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