65.9K
CodeProject 正在变化。 阅读更多。
Home

使用部分视图和 jQueryUI 在 ASP.NET MVC4 中进行 CRUD 操作 - 第 1 部分

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.92/5 (54投票s)

2013 年 11 月 5 日

CPOL

6分钟阅读

viewsIcon

123453

downloadIcon

7001

使用部分视图和 jQueryUI 在 ASP.NET MVC4 中进行 CRUD 操作

引言

在本文中,我们将学习如何在 ASP.NET MVC4 中使用部分视图和 jQueryUI 实现 CRUD 操作。我们将通过 Ajax 调用服务器来访问用于创建、编辑和删除培训的部分视图。我们将借助 jQuery $.ajax() 调用控制器操作方法。为了方便起见,XML 文件用作数据库。在本系列文章中,您将学习:

  • 什么是部分视图
  • 如何使用 jQueryUI 方法创建控件
  • 如何从 XML 文件访问数据
  • 如何创建部分视图
  • 如何使用部分视图
  • 如何使用 jQueryUI 方法
  • 如何使用 jQuery Ajax 方法调用相应的方法

注意:我使用Google Chrome 浏览器测试了代码,对于其他浏览器,编辑弹出窗口(本文第 2 部分介绍) 可能无法正常工作。 

为使文章篇幅合理,本文分为两部分。

第 1 部分大纲

  • 部分视图和 jQueryUI 概述
  • 创建 ASP.NET MVC 4 应用程序
  • 创建 XML 文件作为数据库和培训存储库
  • 实现操作方法和视图

第 2 部分大纲

  • 实现创建操作
  • 实现编辑操作
  • 实现删除操作

我们现在开始第 1 部分。首先,一些基础知识...

部分视图和 jQueryUI 概述

部分视图

部分视图允许我们在应用程序中的多个页面中使用相同的 Razor 和 HTML 代码。当您需要在多个视图中使用相同的代码时,部分视图是一个很好的选择。我们知道,如果需要在所有页面中显示某些内容,最好将其放在 MVC 应用程序的布局页面中。在 ASP.NET Web Forms 中,我们有主页面来定义所有其他页面共享的核心布局。但如果您想添加一些功能,但不是所有页面都添加,而是只添加部分页面,那么部分视图就是正确的选择。例如,创建产品、编辑产品等功能。

在此代码示例中,我们为培训的创建、编辑和删除表单使用部分视图。在标准的 ASP.NET MVC 项目模板中,部分视图可以添加到 Views 文件夹内的任何文件夹中,但这些部分视图不能被该文件夹外的视图使用。例如,如果您将部分视图添加到 Home 文件夹,它只能被 Home 文件夹内的视图使用。如果我们添加部分视图到未与任何控制器关联的 Shared 文件夹,那么它们可以在整个应用程序的任何视图中使用,这极大地提高了代码的可重用性。

jQueryUI

jQueryUI 扩展了底层的 jQuery 库,提供了一系列丰富而交互式的 UI 组件,用于增强 Web 应用程序的用户界面。它是 jQuery 的官方 UI 库。默认情况下,jQueryUI 随 Visual Studio 2012 一起提供。如果您使用的是 Visual Studio 2012,您将在 Scripts 文件夹中找到所有必需的 jQueryUI 库,以及 Content 文件夹中的必需 CSS 文件。如果您不使用 Visual Studio 2012,您需要自己添加 jQueryUI 库和 CSS 文件。您可以从此处下载 jQueryUI 包。

注意:我们假设您已下载附带的包含运行项目的示例代码。如果没有,请下载,因为我们在这里不提供所有代码的屏幕截图。让我们开始创建一个演示应用程序,以实现培训的 CRUD 操作。

创建 ASP.NET MVC 4 应用程序

  1. 让我们通过选择 ASP.NET MVC4 Web Application 模板来创建一个示例应用程序,并将项目名称设置为 CRUDWithAjax ,然后单击“确定”。

    Choose Application Template for ASP.NET MVC4

  2. 选择 Basic Application 作为模板。Visual Studio 2012 会在解决方案中添加一个 CRUDWithAjax 项目,如下图所示:

    Choose Application Type

  3. 展开 ContentScripts 文件夹。您将在 Content 文件夹中找到所有必需的 jQuery、jQueryUI 库以及所有 CSS 文件,如下图所示:

    Initial Project Structure

    作为一种良好的实践,我们不应该在应用程序中包含我们不使用的文件。所以,让我们从 ScriptsContent 文件夹中删除不必要的文件。查看下面的屏幕截图,了解我们需要什么,并删除 ScriptsContent 文件夹中的所有其他文件。

    Required Files

  4. 打开 App_Start 文件夹。从该文件夹中删除 WebApiConfig.cs,因为在此应用程序中我们不进行任何与 WebApi 相关的工作。
  5. 打开 BundleConfig.cs 文件,并从该文件中删除不必要的代码。现在代码如下:
    public static void RegisterBundles(BundleCollection bundles)
    {
        bundles.Add(new ScriptBundle("~/bundles/jquery").Include(
                    "~/Scripts/jquery-{version}.js"));
                    
        bundles.Add(new ScriptBundle("~/bundles/jqueryui").Include(
                    "~/Scripts/jquery-ui-{version}.js"));
                    
        bundles.Add(new StyleBundle("~/Content/css").Include("~/Content/site.css"));
        bundles.Add(new StyleBundle("~/Content/themes/base/css").Include(
                    "~/Content/themes/base/jquery-ui.css"                
                    ));
    }

创建 XML 文件作为数据库和培训存储库

  1. Models 文件夹下添加 Training.csITrainingRepository.csTrainingRepository.cs 文件。编写下载文件中的代码。
    Training.cs 文件包含 Training 实体的属性。
    ITrainingRepository 是一个接口,其中包含我们将用于执行 CRUD 操作的方法。
    我们需要在 TrainingRepository.cs 文件中实现这些方法。在 TrainingRepository.cs 文件的构造函数内部,为 Trainings.xml 的物理位置提供了路径。这里,Trainings.xml 作为数据库。
  2. Trainings.xml 文件添加到 App_Data 文件夹,如下图所示:

    TrainingXML File

    Tranings.xml 文件添加下载代码中给出的数据。示例如下:

    Training data in XML File

实现操作方法和视图

  1. 通过右键单击 Controller 文件夹来添加一个控制器,并将其命名为 Home。创建 TrainingRepository 类的实例,并使用该对象执行 CRUD 操作。
  2. HomeController.cs 文件中,在 Index 操作方法中添加以下代码,以返回填充了培训数据的 Index 视图。
    public ActionResult Index()
    {
        List<Training> allTrainings = _trainingRepository.GetTrainings().ToList();
        return View(alltrainings);
    }
  3. 通过右键单击 Index() 操作方法添加一个视图,Index.cshtml 文件将被添加到 Views -> Home 文件夹。为了在 Index.cshtml 文件中显示我们的培训,请编写以下代码:
        @model <IEnumerable<CRUDWithAjax.Models.Training>
       
        <html>
        <head>
            <title></title>
            <script src="~/Scripts/appjs/jquery.timepicker.min.js"></script>
            <link href="~/Content/appcss/custom-style.css" rel="stylesheet" />
            <link href="~/Content/appcss/jquery.timepicker.css" rel="stylesheet" /> 
        </head>
        <body>
            <div  class="pageHeader" >
               <h2>Manage Trainings</h2>
            </div>
            <table id="tbltraining" class="tblStyle">
                <tr  class="tblHearerRow">
                    <th class="tblHearerCell" >Name
                    </th>
                    <th class="tblHearerCell">Instructor
                    </th>
                    <th class="tblHearerCell">Star tDate
                    </th>
                    <th class="tblHearerCell">End Date
                    </th>
                    <th class="tblHearerCell">Start Time
                    </th>
                    <th class="tblHearerCell">Duration
                    </th>
                    <th class="tblHearerCell">Actions
                    </th>
                </tr>
                @foreach (var item in Model)
                {
                    <tr class="tblRow">
                        <td id="itemId" class="itemIdClass tblColumn">
                            @Html.TextBoxFor(modelItem => item.ID)
                        </td>
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.Name)
                        </td>
                        
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.Instructor)
                        </td>
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.StartDate)
                        </td>
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.EndDate)
                        </td>
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.Time)
                        </td>
                        <td class="tblColumn">
                            @Html.DisplayFor(modelItem => item.Duration)
                        </td>
                        <td class="tblColumn">                   
                            <input type="button" value="Edit" 
                            class="buttonEdit btnStyleOne" />
                            <input type="button" value="Delete"  
                            class="buttonDelete btnStyleOne" />
                        <td>
                    </tr>
                }
            </table>
                <div class="btnStyleTwo">           
            <input type="button" value="Create new Training" 
            class="buttonCreate btnStyleOne" />
            </div>
        </body>
        </html>

    在这里,我们使用 foreach 函数遍历 Model (培训列表),以表格形式显示数据。

  4. Content 文件夹有两个文件,custom-style.cssjquery.timepicker.css。这些文件包含所有样式相关的信息。目前,Index.cshtml 只使用了 custom-style.css 文件。jquery.timepicker.css 将在稍后使用。

    Content Folder

  5. 现在运行应用程序。希望您会得到一个类似于下面屏幕的界面:

    Final Output Page

    在这里,您将获得 XML 数据库中的所有培训。但是创建、编辑和删除按钮不起作用。在下一部分中,我们将实现用于实现创建、编辑和删除操作的功能。

结论

在本文中,我们回顾了如何在网页上显示培训。我们了解了如何使用 ASP.NET MVC 4 模板。为了获取培训列表,我们使用 XML 文件作为数据库。我们通过存储库类(在控制器中用于响应请求)读取 XML 文件中的数据。在本系列的第 2 部分中,我们将看到如何使用 AJAX 调用和部分视图进行创建、编辑和删除操作。

© . All rights reserved.