程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> ASP.NET >> 關於ASP.NET >> ASP.NET MVC案例教程(基於ASP.NET MVC beta)—第四篇:傳遞表單數據

ASP.NET MVC案例教程(基於ASP.NET MVC beta)—第四篇:傳遞表單數據

編輯:關於ASP.NET

前言

通過前幾篇文章,我們已經能比較自如的使用ASP.NET MVC來呈現頁面和數據了。但是,有一個大問題沒有解決:如何處理表單 數據。例如,我們將要實現的公告發布功能,用戶肯定是在某個表單頁面輸入標題、正文等內容,而後提交,然後表單數據要被傳遞到相應的 地方交由業務邏輯組件處理。

在傳統的ASP.NET下,使用的是Model1模式,每個aspx頁面有一個同名的aspx.cs文件,當提交表單時,默 認數據被提交到這個同名aspx.cs文件中某個方法下處理。但是,在ASP.NET MVC中,這種方法不能用了,因為我們換用了Model2模式,不能再 用同名代碼文件來處理aspx的提交請求(但是這不表明同名代碼文件就沒有用了,實際上,它依然會被執行,但是我們不提倡在裡面處理任何 邏輯,但是,有時會利用它進行一些初始化操作。),那麼應該怎麼做呢?不多講,我們以例子說明問題。

下面我們一步一步完成 “MVC公告發布系統”的公告發布功能,等做完這個功能,上面的問題就明了了。

先修改一個錯誤...

這裡,首先要 像大家道歉,因為在第一篇裡,我犯了一個錯誤。就是在公告的實體類AnnounceInfo中少了一個屬性。現在,我們在AnnounceInfo中添加一個 叫Cateogry的屬性,類型為int,它用來指明這個公告屬於哪個分類。

對於這個錯誤,我十分抱歉。

建立輸入信息頁面

下面,正式開始我們的工作。首先,我要建立一個頁面,用來讓用戶輸入公告信息。而我們知道,在ASP.NET MVC中不能直接請求aspx文件,任 何請求都要通過Controller,所以,我們首先在Controllers目錄下建立一個新的Controller類,名叫AnnounceController。刪除其中自動生成 的Index方法,新建一個名叫Release的Action方法,具體代碼如下。

AnnounceController.cs:

1using System;
2using System.Collections.Generic;
3using System.Linq;
4using System.Web;
5using System.Web.Mvc;
6using System.Web.Mvc.Ajax;
7using MVCDemo.Models;
8using MVCDemo.Models.Interfaces;
9using MVCDemo.Models.Entities;
10
11namespace MVCDemo.Controllers
12{
13  public class AnnounceController : Controller
14  {
15    public ActionResult Release()
16    {
17      ICategoryService cServ = ServiceBuilder.BuildCategoryService();
18      List<CategoryInfo> categories = cServ.GetAll();
19      ViewData["Categories"] = new SelectList(categories, "ID", "Name");
20       return View("Release");
21    }
22  }
23}

這個就是要呈現表單頁的Action方 法,看看它做了什麼:它首先取出所有的分類,然後將它們轉成SelectList類型存入ViewData,最後呈現Release視圖。

為什麼要取出 所有分類呢?因為我們在發布公告時希望有個下拉列表框列出所有公告名稱,讓用戶可以選擇要發布的公告屬於哪個分類。而SelectList是 ASP.NET MVC中用於綁定到下拉列表的類型。它有很多重載的構造方法,其中我使用的是三個參數的,它們分別表示:生成數據的枚舉,綁定到 value的字段名,綁定到列表名稱的字段名。這裡,將把所有分類實體集合綁定到下拉列表,而ID屬性作為值,Name屬性作為顯示在列表框中的 名字。

如果我們不需要下拉列表框來顯示所有分類,那麼Release方法只需一行return View("Release");就可以了。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved