Есть ли способ получить доступ к объекту, определенному в представлении на главной странице в ASP.Net MVC - PullRequest
1 голос
/ 12 января 2010

Итак, в моем проекте MVC есть часть, которая создает массив JSON. Я хочу переместить этот кусок кода из верхней части тела html-страницы вниз с остальной частью JS по соображениям скорости. То есть я хочу сохранить JSON, созданный в виде строки в C #, и получить к нему доступ на Site.Master.

Какой самый лучший вариант здесь?

Спасибо, Denis

Ответы [ 4 ]

2 голосов
/ 12 января 2010

Когда мне нужно получить доступ к информации в моей MasterPage, я создаю BaseController и устанавливаю информацию в моих ViewData:

public abstract class BaseController : Controller
{
    protected override void Initialize(System.Web.Routing.RequestContext requestContext)
    {
        base.Initialize(requestContext);

        ViewData["JSonObject"] = "json string";
    }
}

Просто нужно унаследовать весь контроллер от BaseController, и он будет работать.

Все представления, включая MasterPage, теперь могут получить доступ к ViewData ["JSonObject"]!

0 голосов
/ 13 января 2010

Кажется, что ViewData только сверху вниз. Поэтому, если вы назначите значение в родительском элементе partials или контроллере, которое будет работать, но не наоборот. Мне удалось заставить его работать с помощью Context.Item

Context.Items ["JSONFeatures"] = "test"; Частично Context.Items [ "JSONFeatures"] ToString ().; на MasterPage

Надеюсь, это кому-нибудь поможет. Я не уверен, что это лучшие практики, но это работает, я знаю лучше!

0 голосов
/ 12 января 2010

Используйте ViewData для передачи информации между представлениями.

В вашем частичном:

ViewData["JsonString"] = ".....";

На главной странице:

<%= ViewData[ "JsonString" ] %>
0 голосов
/ 12 января 2010

Просто вызовите RenderPartial в MasterPage

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...