如何使用ASP.NET MVC创建仪表板用户界面?

5

我目前正在使用ASP.NET MVC构建一个应用程序。数据输入页面相当容易编写,我只需将页面的模型设置为我的业务对象类型:

namespace MyNameSpace.Web.Views.ProjectEdit
{
    public partial class MyView : ViewPage<Project>
    {
    }
}

我遇到了困难,需要找出最佳方法来使用ASP.NET MVC实现类似仪表盘的界面,并使用独立的部分,每个部分的模型都不同。我假设每个部分都是一个MVC用户控件。

另外,如何使每个部分都可测试?

3个回答

7

我认为用户控件可能是最好的选择。我不确定测试可行性方面的问题在哪里。您应该能够测试您的控制器是否提供了正确的视图数据,因为您将有多个模型,每个模型可能都存储在单独的视图数据项中,而不是在单个模型中聚合它们。虽然在单个模型中聚合也是可能的,但可能更加脆弱。每个控件只需要检查特定的视图数据项,而不是特定于特定模型。您可以通过以下方式在每个视图页面上近似模型变量:

<% MyUserControlModel model = ViewData["MyUserControlModel"]
         as MyUserControlModel; %>

<div id="myUserControl_dashboard" class="dashboard">
   Name: <%= model.Name %><br />
   Count: <%$ model.Count %>
</div>

如果您需要测试视图,则可能已经使用Selenium或其他Web测试框架。我认为这些框架不会关心页面是如何构建的,您应该能够像往常一样构建测试。


假设我有一个HomeController...在Index视图上,我想显示X个其他用户控件...我该怎么做? - mattruma
创建你的DashboardView,以你想要的方式呈现每个UserControl。让你的Index操作收集每个用户控件所需的模型,并将每个模型存储在适当命名的ViewData项中。每个控件仅需要呈现其数据。 - tvanfosson
Index操作返回一个ViewResult,其中包含每个用户控件的适当数据,用于DashboardView。 - tvanfosson

3

2
Codeplex.com有一个开源项目"DotNet.Highcharts",它提供了一个ASP.NET控件,包装了优秀(个人使用免费)的Highcharts图表库。下载部分包括一个MVC3示例项目。
网址:http://dotnethighcharts.codeplex.com/ 我在CodeProject.com上发布了一篇文章,其中包含可下载的VS2012解决方案和一些示例C#代码。但是我的示例中使用的是Webform模板,而不是MVC。大部分仪表板都使用JavaScript库、HTML和CSS完成。我包含了一些示例C#代码来演示在C#中检索数据,然后将其与JavaScript代码合并以呈现众多仪表板图表之一。

谢谢您的回复。我有一个问题。我想了解如何将用户控件数据传递给R进行处理,并将结果返回到UI,以便通过Highcharts绘制图表。您有示例代码可以分享吗?您有任何想法我该如何实现吗? - user1471980

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接