如何将数据从Controller传递到_Layout.cshtml

时间:2020-05-16 06:57:27

标签: asp.net-mvc model-view-controller

我在_Layout中显示城市列表。我使用ViewBag传递数据到此,

  @{
    var cities = (List<CustomCityViewModel>)ViewBag.Cities;
   }
   <ul class="list-items">
    @foreach (var city in cities)
     {
      <li>
       <span>
        @if (city.Id == null)
         {
           <a href="@Url.Action("Search","Home")">
            @city.Name
           </a>
         }
         else
         {
          <a class="city-search-item" data-name="@city.Name" data-id="@city.Id">
           @city.Name
           <i class="fa fa-angle-left"></i>
          </a>
         }
        </span>
      </li>
     }
    </ul>

我应该在每个动作中设置viewbag的值。

如何发送数据,以免在每个操作中分配数据?

1 个答案:

答案 0 :(得分:0)

//create a base Model class 

public class BaseModel
{
   public BaseModel(){
     //here init base data to get in _layout
     //sete data to cities
   }
   public IList<City> cites{set;get;}
}


// all other Model extend from BaseModel

 // in your  _Layout use BaseModel




     @model BaseModel
  @{
    var cities =Model;
   }
   <ul class="list-items">
    @foreach (var city in cities)
     {
      <li>
       <span>
        @if (city.Id == null)
         {
           <a href="@Url.Action("Search","Home")">
            @city.Name
           </a>
         }
         else
         {
          <a class="city-search-item" data-name="@city.Name" data-id="@city.Id">
           @city.Name
           <i class="fa fa-angle-left"></i>
          </a>
         }
        </span>
      </li>
     }
    </ul>
相关问题