asp,net mvc5 视图讲解

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/weixin_41600552/article/details/83066339

1.理解视图约定

如何让index操作方法渲染一个不同的视图?

解决办法:可以向其提供一个不同的视图名称来进行(重写)

public ActrionResult INdex()

{

    //该写法只是重写同一目录下的不同视图重写来进行展示不同的视图内容

      return view("About")

}

public ActrionResult INdex()

{

    //该写法指定的目录下完全是一个不一样的目录结构,在指定不同目录下的视图是必须带入后缀.cshtml  才行

      return view("~/View/Example/Index.cshtml")

}

2,强类型数图中viewbag的不足之处该怎么解决

public ActrionResult Index()

{

    var a=new List<Album>();

    for(int i=0;i<10;i++)

   {

      albums.Add(new Ablum{Title=" a"+i})

  }

  viewBag.Albums=albums;

  return view();

}

随后,再视图中迭代和显示产品,如下代码

<ul>

  @foreach(albun a in(ViewBage.Albums as IEnumerble<Album>))

{

       <li>@a.Time</li>

}

</ul>

这样写比较麻烦,在显示时还需要转换数据类型,以下有更好的解决办法

就是重载视图view中的模型来指定模型

public ActrionResult Index()

{

    var a=new List<Album>();

    for(int i=0;i<10;i++)

   {

      albums.Add(new Ablum{Title=" a"+i})

  }

  return view(albums);

}

随后,再视图中迭代和显示产品,如下代码则这里需要使用@model声明

@model IEnumerable<MvcStore.Models.Album>(完全限定类型名是名称空间@mode   +类型名称   IEnumerble<Album>l)

只要引入这俩个东西就可可以获取集合中的属性

方法二:

使用 @Using  来引用命名空间

@using MVCStaore;

@model IEnumerable<Album>

方法三: 加入到View目录下的web.confing文件中声明即可

<namespaces>

      ........................

     <add namespce="MvcMusicStore.Model">

</namespaces>

<ul>

  @foreach(albun a in Model)

{

       <li>@a.Time</li>

}

</ul>

猜你喜欢

转载自blog.csdn.net/weixin_41600552/article/details/83066339