当前位置:编程学习 > asp >>

ASP.NET MVC 音乐商店 - 5 通过支架创建编辑表单 续

 

查看 StoreManager 控制器的代码

现在,Store Manager 控制器中已经包含了一定数量的代码,我们从头到尾重新过一下。

首先,在控制器中包含了标准的 MVC 控制器的代码,为了使用方便,还可以引用我们的模型类所在的命名空间 MvcMusicStore.Models。控制器还拥有了一个私有的 MusicStoreEntities 的私有成员,以方便控制器中的每个 Action 访问数据库。

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

using MvcMusicStore.Models;

namespace MvcMusicStore.Controllers
{
    public class StoreManagerController : Controller
    {
        MvcMusicStore.Models.MusicStoreEntities storeDB
            = new MvcMusicStore.Models.MusicStoreEntities();

 

Index 和 Details Action

Index 视图获取专辑的列表,包含每一个专辑引用的流派和艺术家信息,向我们在前面 Store控制器的 Browse时候看到的,Index 视图中需要包含对于链接到的流派和艺术家对象来显示相关的信息,所以,在 Index 的 Action 方法中,需要包含这些数据。

	//
// GET: /StoreManager/

public ActionResult Index()
{
    var albums = storeDB.Albums.Include("Genre").Include("Artist");
    return View(albums.ToList());
}

 

在 Details 方法中,类似于 Store 控制器的 Details 方法,通过专辑的 Id 来获取专辑对象,这里使用 Find() 方法完成,最后,把这个对象传递给视图。

	//
// GET: /StoreManager/Details/5

public ViewResult Details(int id)
{
    MvcMusicStore.Models.Album album = storeDB.Albums.Find(id);
    return View(album);
}

 

创建方法 Create

与前面看到的不同,Create 方法需要处理表单,当用户第一次访问地址 /StoreManager/Create 的时候,用户将会看到一个空的表单,HTML 页面中包含一个 <form> 元素,其中包含了下拉列表和文本框等输入元素,用户可以借助他们输入专辑的详细信息。

当用户填写了专辑的信息之后,可以通过点击 “保存” 按钮来提交表单信息到服务器,我们de应用程序可以获取这些信息保存到数据库中。在用户点击 “保存” 的时候,浏览器发出一个 Http 的 Post 请求,到 /StoreManager/Create 地址,表单的内容作为这个 Post 请求的一部分发送回服务器。

ASP.NET MVC 允许我们容易地分割这两种同样对于 Create 方法的请求处理,通过提供两个同名的 Create 方法,一个用来处理 Http Get 请求,一个用来处理 Http Post 请求,区分的方式是在处理 Post 请求的方法前面增加一个 [HttpPost] 的标签。如果增加 [HttpGet] 标签,则表示这个方法仅仅处理 Http Get 请求。通常没有这个标签,则表示无论是 Get 请求还是 Post 请求都可以由这个 Action 方法处理。

使用 ViewBag 向视图传递信息

我们曾经在这个教程的开始使用过 ViewBag, 但是,没有深入讨论它,ViewBag 允许我们向视图传递信息而不需要首先定义强类型的 Model,在创建专辑的 Action 中,因为在表单中需要两个列表框,我们需要向视图传递列表所需要的数据,以便在视图中填充下拉列表框,最简单的方式就是通过 ViewBag 来实现。

ViewBag 是动态对象,这意味着你可以使用 ViewBag.Foo 或者 ViewBag.YourNameHere 形式的属性而不需要预先定义这些属性,控制器中的代码使用 ViewBag.GenreId 和 ViewBag.Artisid 传递流派和艺术家的信息以便生成表单中下拉列表的值,以后,用来在新创建的专辑中使用。

传递到视图的下拉列表的值使用 SelectList 对象表示,对于我们的要求,使用下面的代码。

CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,