2013-04-08 3 views
1

Есть ли способ изменить некоторые части (некоторые значения) в _layout.cshml при возврате View или PartialView? Я хотел бы отобразить представление или частичный вид и изменить некоторые значения в _layout.cshtmlИзмените значение в _layout.cshtml при отображении вида

В _layout.cshtml:

<div id="#mydiv"></div> 

В контроллере:

public class HomeController : Controller 
{ 
    public ActionResult Index() 
    { 
     var model = new MyModel(); 
     return View(model); 
    } 
} 

Спасибо,

+0

Существует множество способов изменения значений, как пример кода и описание того, что и когда вы хотите изменить свои значения. – Peter

+0

Множество .... дайте мне один, это достаточно ... Я обновил вопрос. –

+0

создать раздел –

ответ

1

Разделы являются заполнителями в вашем _Layout, которые могут быть заселены вашим видом:

Пример:

<div id="navBar"> 
    @RenderSection("navBar", required: false) 
</div> 

будет иметь соответствующий раздел в вашем View

@section navBar 
    { 

    @if (Model.needsNavBar==true) 
    { 

     //navBar code 
    } 


    } 

Если это не очевидно, то, что разметка переходит в определении раздела ваш взгляд является вынесенное в вашем _Layout. Важность required: false - ваша страница будет работать без ошибок, если ваше определение раздела не будет отображаться в вашем представлении.

+0

Можем ли мы использовать модель на @section? –

+0

@ Крис-я уверен. Используйте модель так, как вам нравится. Это похоже на создание разметки в вашем представлении, за исключением того, что она отображается в области раздела «Макет». (это имеет смысл?) –

+0

Могу я задать вам еще один вопрос? –

0

КИ, так как вы не будете конкретными давайте рассмотрят сценарий

вы имели некоторые данные, которые вы хотите на каждой странице позволяет определить его

// pretend it comes from your database or where ever 
var somedata = Guid.NewGuid(); 

как мы собираемся, чтобы получить это в навигационной панели нашего макета

Ну в каждом контроллере actionmethod вы могли бы сделать это

public ActionResult Index(AssessorSearchRecordSearchViewModel model) 
{ 
    ViewBag.SomeData = Guid.NewGuid(); 
    return View(); 
} 

, а затем показать его на ваш взгляд, в статье с

<h1>@ViewBag.SomeData</h1> 

, но это будет раздражать делать и хрупким, чтобы изменить

Вы можете создать BaseClass для контроллера

public abstract class AppBaseController : Controller 
{ 
    protected override void OnActionExecuting(ActionExecutingContext filterContext) 
    { 
     base.OnActionExecuting(filterContext);    
     ViewBag.SomeData = Guid.NewGuid(); 
    } 

} 

и это сделает его доступным во всех методах действий.

Так что это один из примеров, но есть буквально десятки способов сделать доступными данные.

Смежные вопросы