<output id="qn6qe"></output>

    1. <output id="qn6qe"><tt id="qn6qe"></tt></output>
    2. <strike id="qn6qe"></strike>

      亚洲 日本 欧洲 欧美 视频,日韩中文字幕有码av,一本一道av中文字幕无码,国产线播放免费人成视频播放,人妻少妇偷人无码视频,日夜啪啪一区二区三区,国产尤物精品自在拍视频首页,久热这里只有精品12

      返璞歸真 asp.net mvc (1) - 添加、查詢、更新和刪除的 Demo

      [索引頁(yè)]
      [源碼下載]


      返璞歸真 asp.net mvc (1) - 添加、查詢、更新和刪除的 Demo


      作者:webabcd


      介紹
      以Northwind為示例數(shù)據(jù)庫(kù),使用asp.net mvc 1.0實(shí)現(xiàn)添加操作、查詢操作、更新操作和刪除操作


      示例
      1、Model(使用ADO.NET Entity Framework做ORM)
      CategorySystem.cs(業(yè)務(wù)邏輯
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      namespace MVC.Models
      {
          
      /// <summary>
          
      /// MVC 之 Model
          
      /// Category 業(yè)務(wù)層邏輯
          
      /// </summary>

          public class CategeorySystem
          
      {
              
      // Northwind 的 ObjectContext
              private NorthwindEntities ctx = new NorthwindEntities();

              
      /// <summary>
              
      /// 獲取 Category 列表
              
      /// </summary>
              
      /// <returns></returns>

              public List<Categories> GetCategory()
              
      {
                  
      return ctx.Categories.ToList();
              }


              
      /// <summary>
              
      /// 獲取 Category 實(shí)體
              
      /// </summary>
              
      /// <param name="categoryId">類別 ID</param>
              
      /// <returns></returns>

              public Categories GetCategory(int categoryId)
              
      {
                  
      return ctx.Categories.FirstOrDefault(p => p.CategoryID == categoryId);
              }

          }

      }


      ProductSystem.cs(業(yè)務(wù)邏輯

      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      namespace MVC.Models
      {
          
      /// <summary>
          
      /// MVC 之 Model
          
      /// Product 業(yè)務(wù)層邏輯
          
      /// </summary>

          public class ProductSystem
          
      {
              
      // // Northwind 的 ObjectContext
              private NorthwindEntities ctx = new NorthwindEntities();

              
      /// <summary>
              
      /// 獲取產(chǎn)品列表
              
      /// </summary>
              
      /// <param name="pageIndex">頁(yè)索引</param>
              
      /// <param name="pageSize">頁(yè)大小</param>
              
      /// <returns></returns>

              public List<Products> GetProduct(int pageIndex, int pageSize)
              
      {
                  
      return ctx.Products.OrderBy(p => p.ProductID).Skip(pageIndex * pageSize).Take(pageSize).ToList();
              }


              
      /// <summary>
              
      /// 獲取產(chǎn)品
              
      /// </summary>
              
      /// <param name="productId">產(chǎn)品 ID</param>
              
      /// <returns></returns>

              public Products GetProduct(int productId)
              
      {
                  
      return ctx.Products.FirstOrDefault(p => p.ProductID == productId);
              }


              
      /// <summary>
              
      /// 新增產(chǎn)品
              
      /// </summary>
              
      /// <param name="product">產(chǎn)品的 Entity</param>

              public void AddProduct(Products product)
              
      {
                  ctx.AddToProducts(product);
              }


              
      /// <summary>
              
      /// 刪除產(chǎn)品
              
      /// </summary>
              
      /// <param name="product">產(chǎn)品的 Entity</param>

              public void DeleteProduct(Products product)
              
      {
                  product.Order_Details.Load();
                  ctx.DeleteObject(product);
              }


              
      /// <summary>
              
      /// 在此對(duì)象的上下文中保存修改(增/刪/改的操作)
              
      /// </summary>

              public void Save()
              
      {
                  ctx.SaveChanges();
              }


              
      /// <summary>
              
      /// 在此對(duì)象的上下文中創(chuàng)建 EntityKey
              
      /// </summary>
              
      /// <param name="entitySetName">實(shí)體集的名稱</param>
              
      /// <param name="entity">實(shí)體</param>
              
      /// <returns></returns>

              public System.Data.EntityKey CreateEntityKey(string entitySetName, object entity)
              
      {
                  
      return ctx.CreateEntityKey(entitySetName, entity);
              }

          }

      }


      ValidationEntity.cs(合法性驗(yàn)證)
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      namespace MVC.Models
      {
          
      /// <summary>
          
      /// 驗(yàn)證信息的實(shí)體
          
      /// </summary>

          public class ValidationEntity
          
      {
              
      /// <summary>
              
      /// 驗(yàn)證的錯(cuò)誤信息
              
      /// </summary>

              public string ErrorMessage getset; }
              
      /// <summary>
              
      /// 產(chǎn)生錯(cuò)誤信息的屬性名稱
              
      /// </summary>

              public string PropertyName getset; }
              
              
      public ValidationEntity(string errorMessage)
              
      {
                  ErrorMessage 
      = errorMessage;
              }


              
      public ValidationEntity(string errorMessage, string propertyName)
              
      {
                  ErrorMessage 
      = errorMessage;
                  PropertyName 
      = propertyName;
              }

          }

      }


      Product.cs(合法性驗(yàn)證)
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;

      namespace MVC.Models
      {
          
      /// <summary>
          
      /// 擴(kuò)展 Product 實(shí)體
          
      /// 主要是為了對(duì) Product 實(shí)體的各個(gè)屬性做輸入的合法性驗(yàn)證
          
      /// </summary>

          public partial class Products
          
      {
              List
      <ValidationEntity> info = new List<ValidationEntity>();

              
      /// <summary>
              
      /// 對(duì) Product 實(shí)體所做的修改是否通過了合法性驗(yàn)證
              
      /// </summary>

              public bool IsValid
              
      {
                  
      get 
                  
      {
                      
      return GetValidation().Count() == 0;
                  }

              }

              
              
      /// <summary>
              
      /// 返回驗(yàn)證信息列表
              
      /// </summary>
              
      /// <returns></returns>

              public List<ValidationEntity> GetValidation()
              
      {
                  
      return info;
              }


              
      /// <summary>
              
      /// 重寫部分方法 OnProductNameChanging
              
      /// 用于在 ProductName 屬性改變前,對(duì)其做合法性驗(yàn)證
              
      /// </summary>
              
      /// <param name="value"></param>

              partial void OnProductNameChanging(string value)
              
      {
                  
      if (string.IsNullOrEmpty(value))
                      info.Add(
      new ValidationEntity("請(qǐng)輸入產(chǎn)品名稱""ProductName"));
              }


              
      /// <summary>
              
      /// 重寫部分方法 OnUnitPriceChanging
              
      /// 用于在 UnitPrice 屬性改變前,對(duì)其做合法性驗(yàn)證
              
      /// </summary>
              
      /// <param name="value"></param>

              partial void OnUnitPriceChanging(global::System.Nullable<decimal> value)
              
      {
                  
      if (value == null)
                      info.Add(
      new ValidationEntity("請(qǐng)輸入單價(jià)""UnitPrice"));
                  
      else if (((decimal)value) > 100)
                      info.Add(
      new ValidationEntity("輸入的單價(jià)過高""UnitPrice"));
              }

          }

      }



      2、Controller
      ProductController.cs
      using System;
      using System.Collections.Generic;
      using System.Linq;
      using System.Web;
      using System.Web.Mvc;
      using System.Web.Mvc.Ajax;

      using MVC.Models;

      namespace MVC.Controllers
      {
          
      /// <summary>
          
      /// MVC 之 Controller
          
      /// 這里體現(xiàn)了 Convention over Configuration
          
      /// Controller 類必須以字符串 Controller 做類名稱的結(jié)尾,字符串 Controller 之前的字符串為 Controller 的名稱,類中的方法名為 Action 的名稱
          
      /// 例如 ProductController, Controller 的名稱為:Product;其中的 Action 名稱有 Index, Details, Edit 等
          
      /// </summary>

          public class ProductController : Controller // 需要繼承自 System.Web.Mvc.Controller 或者實(shí)現(xiàn) IController 接口
          {
              ProductSystem ps 
      = new ProductSystem();

              
      // Action 的返回值必須為 ActionResult 或 void 

              
      /// <summary>
              
      /// 獲取 Product 的列表
              
      /// </summary>
              
      /// <param name="pageIndex">頁(yè)索引</param>
              
      /// <returns></returns>

              public ActionResult Index(int pageIndex)
              
      {
                  
      int pageSize = 10;
                  var products 
      = ps.GetProduct(pageIndex, pageSize);

                  
      // 此 Action 對(duì)應(yīng)的 View 為(按查找的先后順序) Views/Product/Index.aspx, Views/Product/Index.ascx, Views/Shared/Index.aspx, Views/Shared/Index.ascx
                  
      // 其所對(duì)應(yīng)的 View 的關(guān)聯(lián)對(duì)象為 products
                  return View("Index", products);
              }


              
      public ActionResult Details(int id)
              
      {
                  var product 
      = ps.GetProduct(id);

                  
      if (product == null)
                      
      return View("NotFound");
                  
      else
                      
      // 對(duì)應(yīng)的 View 的名稱默認(rèn)為 Action 的名稱,所以此處所對(duì)應(yīng)的 View 的名稱為 Details
                      return View(product);
              }


              
      public ActionResult Edit(int id)
              
      {
                  var product 
      = ps.GetProduct(id);

                  
      if (product == null)
                  
      {
                      
      return View("NotFound");
                  }

                  
      else
                  
      {
                      product.CategoriesReference.Load();

                      
      // 編輯 Product 的時(shí)候需要在一個(gè) DropDownList 中選擇其所對(duì)應(yīng)的 Category, 所以這里要構(gòu)造一個(gè)名為 CategoryAll 的 ViewData
                      
      // 因?yàn)?nbsp;Categories 已經(jīng)是 Product 的屬性了,所以這里的 ViewData 的 key 不能為 Categories
                      if (product.Categories == null)
                          ViewData[
      "CategoryAll"= new SelectList(new CategeorySystem().GetCategory(), "CategoryId""CategoryName");
                      
      else
                          ViewData[
      "CategoryAll"= new SelectList(new CategeorySystem().GetCategory(), "CategoryId""CategoryName", product.Categories.CategoryID);

                      
      return View("Edit", product);
                  }

              }


              
      // 可以用 AcceptVerbs 來聲明 Action 所對(duì)應(yīng)的 http 方法
              [AcceptVerbs(HttpVerbs.Post)]
              
      public ActionResult Edit(int id, FormCollection formValues)
              
      {
                  var product 
      = ps.GetProduct(id);

                  
      // 可以通過這種方式一一為 Product 對(duì)象的屬性賦值
                  
      // product.ProductName = Request.Form["ProductName"];

                  
      // 也可以通過 UpdateModel, 讓系統(tǒng)自動(dòng)為屬性賦值(通過反射的方式,取得對(duì)象的屬性名稱,然后和 Request 的 key 做匹配,匹配成功的則賦值)
                  UpdateModel<Products>(product);

                  var category 
      = new CategeorySystem().GetCategory(int.Parse(Request.Form["MyCategory"]));
                  product.CategoriesReference.EntityKey 
      = ps.CreateEntityKey("Categories", category);

                  
      // 通過以下的方式讓 UpdateModel 只更新指定屬性
                  
      // string[] allowedProperties = new[] { "ProductName", "UnitPrice" };
                  
      // UpdateModel(product, allowedProperties);

                  
      if (!product.IsValid)
                  
      {
                      
      foreach (var validation in product.GetValidation())
                      
      {
                          
      // 設(shè)置驗(yàn)證信息
                          ModelState.AddModelError(validation.PropertyName, validation.ErrorMessage);
                      }


                      
      if (product.Categories == null)
                          ViewData[
      "CategoryAll"= new SelectList(new CategeorySystem().GetCategory(), "CategoryId""CategoryName");
                      
      else
                          ViewData[
      "CategoryAll"= new SelectList(new CategeorySystem().GetCategory(), "CategoryId""CategoryName", product.Categories.CategoryID);

                      
      return View(product);
                  }


                  ps.Save();

                  
      // 跳轉(zhuǎn)到指定的 Action
                  return RedirectToAction("Details"new { id = product.ProductID });
              }


              
      public ActionResult Create()
              
      {
                  Products product 
      = new Products()
                  
      {
                      ProductName 
      = "請(qǐng)輸入產(chǎn)品名稱"
                  }
      ;

                  
      return View(product);
              }


              
      // 可以為參數(shù)添加聲明,如下例:[Bind(Include = "ProductName")],客戶端提交的數(shù)據(jù)中,只有 ProductName 會(huì)被綁定到 Product 對(duì)象上
              
      // [Bind(Include = "ProductName")] 這樣的 attribute 也可以聲明在類上,用于指定類中需要被綁定的屬性
              [AcceptVerbs(HttpVerbs.Post)]
              
      public ActionResult Create([Bind(Include = "ProductName")] Products product)
              
      {
                  
      if (!product.IsValid)
                  
      {
                      
      foreach (var issue in product.GetValidation())
                      
      {
                          ModelState.AddModelError(issue.PropertyName, issue.ErrorMessage);
                      }


                      
      return View(product);
                  }


                  ps.AddProduct(product);
                  ps.Save();

                  
      return RedirectToAction("Details"new { id = product.ProductID });
              }


              
      public ActionResult Delete(int id)
              
      {
                  var product 
      = ps.GetProduct(id);

                  
      if (product == null)
                      
      return View("NotFound");
                  
      else
                      
      return View(product);
              }


              [AcceptVerbs(HttpVerbs.Post)]
              
      public ActionResult Delete(int id, string confirmButton)
              
      {
                  var product 
      = ps.GetProduct(id);

                  
      if (product == null)
                      
      return View("NotFound");

                  ps.DeleteProduct(product);
                  ps.Save();

                  
      return View("Deleted");
              }

          }

      }


      3、View(以列表頁(yè)為例)
      Index.aspx
      <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<IEnumerable<MVC.Models.Products>>" %>

      <asp:Content ID="Content1" ContentPlaceHolderID="TitleContent" runat="server">
          Index
      </asp:Content>
      <asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
          
      <h2>
              Index
      </h2>
          
      <table>
              
      <tr>
                  
      <th>
                  
      </th>
                  
      <th>
                      ProductID
                  
      </th>
                  
      <th>
                      ProductName
                  
      </th>
                  
      <th>
                      UnitPrice
                  
      </th>
              
      </tr>
              
      <%  // 因?yàn)楸卷?yè)集成了 System.Web.Mvc.ViewPage<IEnumerable<MVC.Models.Products>>
                  
      // 所以這里的 Model 就是 System.Web.Mvc.ViewPage<IEnumerable<MVC.Models.Products>> 的 Model 屬性
                  foreach (var item in Model)
                  { 
      %>
              
      <tr>
                  
      <td>
                      
      <!--這里的 Html 屬性類型為 System.Web.Mvc.HtmlHelper-->
                      
      <%= Html.ActionLink("Delete""Delete"new { id = item.ProductID })%>
                      |
                      
      <%= Html.ActionLink("Edit""Edit"new { id = item.ProductID }) %>
                  
      </td>
                  
      <td>
                      
      <%= Html.ActionLink(item.ProductID.ToString(), "Details"new { id=item.ProductID })%>
                  
      </td>
                  
      <td>
                      
      <%= Html.Encode(item.ProductName) %>
                  
      </td>
                  
      <td>
                      
      <%= Html.Encode(String.Format("{0:F}", item.UnitPrice)) %>
                  
      </td>
              
      </tr>
              
      <% } %>
          
      </table>
          
      <p>
              
      <%= Html.RouteLink("上一頁(yè)""Products"new { pageIndex = Convert.ToInt32(Html.ViewContext.RouteData.Values["pageIndex"]) - 1 })%>
              |
              
      <%= Html.RouteLink("下一頁(yè)""Products"new { pageIndex = Convert.ToInt32(Html.ViewContext.RouteData.Values["pageIndex"]) + 1 })%>
          
      </p>
      </asp:Content>


      OK
      [源碼下載]
      posted @ 2009-04-14 10:39  webabcd  閱讀(10938)  評(píng)論(30)    收藏  舉報(bào)
      主站蜘蛛池模板: 夜夜爽妓女8888888视频| 欧美成人精品一区二区三区免费| 婷婷六月色| 国产成人精品午夜2022| 人妻加勒比系列无码专区| 久久久久亚洲AV成人片一区| 成在线人永久免费视频播放| 国产精品第一区亚洲精品| 国产欧美精品区一区二区三区| 亚洲第四色在线中文字幕| 久久精品熟女亚洲av麻| 真实国产老熟女无套内射| 久久精品免视看国产成人| 亚洲香蕉免费有线视频| 搡老女人老妇女老熟妇| 欧美日韩一区二区综合| 日韩中文字幕高清有码| 亚洲国产欧美在线人成| 日本一道一区二区视频| 99久久精品国产一区二区暴力 | av永久免费网站在线观看| 国产愉拍91九色国产愉拍| 欧美国产日韩久久mv| 国产又色又爽无遮挡免费动态图| 久久国产成人高清精品亚洲| 欧美另类精品xxxx人妖| 欧美人妻在线一区二区| 中文毛片无遮挡高潮免费| 在线视频不卡在线亚洲| 伊人成色综合人夜夜久久| 国产suv精品一区二区四| 美女高潮黄又色高清视频免费| 亚洲第一福利网站在线观看 | 久久夜色撩人精品国产小说| 成人中文在线| 亚洲熟妇无码另类久久久| 亚洲国产成人精品女久久| 亚洲AV成人片不卡无码| 精品国产午夜肉伦伦影院| 欧美人成精品网站播放| 日韩大片高清播放器|