gpt4 book ai didi

asp.net-mvc - asp.net mvc2 - 用于母版页和代码组织的 Controller

转载 作者:行者123 更新时间:2023-12-04 18:53:29 25 4
gpt4 key购买 nike

我刚刚完成了我的第一个 ASP.NET MVC (2) CMS。下一步是建立网站,显示来自 CMS 数据库的数据。这是网站设计:

http://img56.imageshack.us/img56/4676/portal.gif http://img56.imageshack.us/img56/4676/portal.gif

#1(红框) - 显示文章类别。 View 模型:

public class CategoriesDisplay
{
public CategoriesDisplay() { }

public int CategoryID { set; get; }
public string CategoryTitle { set; get; }
}

#2(棕色盒子) - 显示最后 x 篇文章;跳过绿框 #3 中的那些。 View 模型:
public class ArticleDisplay
{
public ArticleDisplay() { }

public int CategoryID { set; get; }
public string CategoryTitle { set; get; }

public int ArticleID { set; get; }

public string ArticleTitle { set; get; }
public string URLArticleTitle { set; get; }
public DateTime ArticleDate;

public string ArticleContent { set; get; }

}

#3(绿框) - 显示最后 x 篇文章。使用与棕色框 #2 相同的 ViewModel

#4(蓝框) - 显示即将发生的事件列表。用途 dataContext.Model.Event作为 View 模型

方框#1、#2 和#4 将在整个网站上重复出现,它们是母版页的一部分。所以,我的问题是:将这些数据从模型传输到 Controller 并最终传输到 View 页面的最佳方式是什么?
  • 我应该为
    将所有这些类包装在一起的母版页和 ViewModel 类或
  • 我应该为
    这些盒子中的每一个,并使每个
    其中继承了适当的类
    (如果它甚至有可能
    以这种方式工作?)或
  • 我应该把这个重复的代码放进去吗
    所有 Controller 和所有附加
    通过 ViewData 传输数据,其中
    可能是更糟糕的方式:) 或
  • 也许有更好的和更多的
    简单的方法,但我不知道/看到它?

  • 提前致谢,
    伊莱

    编辑:
    如果您的答案是#1,那么请解释如何为母版页制作 Controller !

    编辑 2:
    在本教程中描述了如何使用抽象类将数据传递到母版页: http://www.asp.net/LEARN/mvc/tutorial-13-cs.aspx
    在“ list 5 – Controllers\MoviesController.cs”中,使用 LINQ 直接从数据库中检索数据,而不是从存储库中检索数据。所以,我想知道这是否只是在本教程中,或者这里有一些技巧并且存储库不能/不应该使用?

    最佳答案

    要将数据获取到我的母版页:

  • 我不喜欢使用抽象类将数据获取到母版页。我更喜欢组合而不是继承。
  • 我不喜欢使用 ViewData 字典,因为它不是强类型的。

  • 我会为每个部分创建 View 、 View 模型和操作。然后调用 Html.RenderAction(...)例如:

    我会创建 CategoriesDisplay.aspx只有红框的html。我会通过你的 CategoriesDisplay模型。然后在我的 Controller 中:
    public class CategoryController : Controller
    {
    public ActionResult DisplayCategories()
    {
    var model = new CategoriesDisplay();
    ...
    return View(model);
    }
    }

    然后在我的母版页中:
    <% Html.RenderAction<CategoryController>(c => c.DisplayCategoreis()); %>

    这将在母版页内呈现内嵌的 CategoriesDisplay View 。这反过来又允许您拥有 SOC(关注点分离)、干净且可管理的代码。

    关于asp.net-mvc - asp.net mvc2 - 用于母版页和代码组织的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2568318/

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