一天学会MVC3之传递模型数据到视图

来源:互联网 发布:农村淘宝政策 编辑:程序博客网 时间:2024/05/02 05:00

右键Models文件夹,添加类:

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MvcMusicStore.Models{    public class Genre    {        public string Name { get; set; }    }}


继续添加类:

using System;using System.Collections.Generic;using System.Linq;using System.Web;namespace MvcMusicStore.Models{    public class Album    {        public string Title { get; set; }        public Genre Genre { get; set; }    }}


修改StoreController.cs的Details方法:

//        // GET: /Store/Details/5        public ActionResult Details(int id)        {            var album = new Album { Title = "Album " + id };            return View(album);        }


然后在这个方法上添加视图模板:

 

点击添加按钮后代码如下:

@model MvcMusicStore.Models.Album@{    ViewBag.Title = "Details";}<h2>@Model.Title</h2>

运行程序,输入:http://localhost:58716/Store/Details/5


下面我们修改StoreController.cs的 Index()方法:

 public ActionResult Index()        {            var genres = new List<Genre>            {            new Genre { Name = "Disco"},            new Genre { Name = "Jazz"},            new Genre { Name = "Rock"}            };            return View(genres);        }

右键单击该方法

改变Index.cshtml的代码如下:

@model IEnumerable<MvcMusicStore.Models.Genre>@{ViewBag.Title = "Store"; }<h3>    Browse Genres</h3><p>    Select from @Model.Count() genres:</p><ul>    @foreach (var genre in Model)    { <li>@genre.Name</li>    }</ul>

浏览应用程序:


下面我们要添加一些超连接改变代码如下:

@model IEnumerable<MvcMusicStore.Models.Genre>@{ViewBag.Title = "Store"; }<h3>    Browse Genres</h3><p>    Select from @Model.Count() genres:</p><ul>    @foreach (var genre in Model)    {        <li>@Html.ActionLink(genre.Name, "Browse", new { genre = genre.Name })</li>    }</ul>


运行http://localhost:58716/Store后,输出的代码类似:

<ul>        <li><a href="/Store/Browse?genre=Disco">Disco</a></li>        <li><a href="/Store/Browse?genre=Jazz">Jazz</a></li>        <li><a href="/Store/Browse?genre=Rock">Rock</a></li></ul>


 ==================下拉选中的问题=====================================================

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


namespace TestMvc.Controllers
{
    public class HomeController : Controller
    {
        public ActionResult Index()
        {
            List<SelectListItem> items = new List<SelectListItem>();
            items.Add(new SelectListItem { Text = "Kirin", Value = "29" });
            items.Add(new SelectListItem { Text = "Jade", Value = "28"});
            items.Add(new SelectListItem { Text = "Yao", Value = "24" });
            ViewBag.dd1 = items;


            return View();
        }


        //必须要传EmployeeModel模型过来,否则下拉会选不中
        [HttpPost]
        public ActionResult Index(EmployeeModel model)
        {
            List<SelectListItem> items = new List<SelectListItem>();
            items.Add(new SelectListItem { Text = "Kirin", Value = "29" });
            items.Add(new SelectListItem { Text = "Jade", Value = "28" });
            items.Add(new SelectListItem { Text = "Yao", Value = "24" });
            ViewBag.dd1 = items;




            return View();
        }


    }
    public class EmployeeModel
    {
        public SearchModel SearchModels { get; set; }
        public String Value { get; set; } //必须与上面下拉选项对应Value
    }


    public class SearchModel
    {
        public String Value { get; set; }//用到的话必须与上面下拉选项对应Value
    }


}


@model  TestMvc.Controllers.EmployeeModel
@{
    ViewBag.Title = "Home Page";
}
@using (Html.BeginForm())
{


   @Html.DropDownListFor(model => model.Value, ViewBag.dd1 as IList<SelectListItem>, new { @class = "form-control select" })


    //也可以下面这样
    @Html.DropDownListFor(model => model.SearchModels.Value, ViewBag.dd1 as IList<SelectListItem>, new { @class = "form-control select" })
    <input type="submit"/>
}

原创粉丝点击