ASP.NET MVC Программирование - PullRequest
1 голос
/ 11 марта 2010

Так вот сделка

Я работаю над проектом, который изначально был сфокусирован на Zend Framework, но теперь я хочу попасть в ASP.NET MVC, и, скажем так, он хороший и отличный старт, хотя я все еще на начальной стадии. этого Но у меня возникают проблемы с передачей данных с моего контроллера на главную страницу / страницу макета. Теперь в Zend я могу определить, какой контроллер и какое действие я выполняю через помощника, которого я создал. Теперь я хочу реализовать ту же функциональность в этом приложении ASP.NET MVC. Таким образом, моя мастер-страница макета знает, в каком контроллере я нахожусь, и, следовательно, выделяет навигацию для него. Я использую прямой пользовательский HTML-код структуры навигации.

Любая помощь по этой конкретной теме будет принята с благодарностью.

Ответы [ 4 ]

2 голосов
/ 11 марта 2010

Добро пожаловать в asp.net mvc ... Я рассматриваю этот сценарий 1 из 2 способов:

1) Я поместил строку кода в верхней части моей мастер-страницы, которая получает текущее вызываемое действие:

<% string action = ViewContext.RouteData.Values["action"].ToString(); %>

Затем вы можете проверить свои навигационные ссылки и, если необходимо, добавить класс:

<% if (action == "Home") { Response.Write(" class='current'"); }%>

2) Я отправляю строку вместе с каждым представлением и прикрепляю ее к тегу body в качестве класса на своей мастер-странице:

public ActionResult Home()
{
    ViewData["BodyClass"] = "home";

    return View();
}


<body class="<%= (string)ViewData["BodyClass"] %>">

Тогда в вашем css вы можете сделать что-то вроде:

.home #nav li a {
    /* something different */
}

Надеюсь, это поможет.

0 голосов
/ 11 марта 2010

Если вы хотите передать данные на свою главную страницу, я бы предложил следующее:

Создать базовый класс модели представления, например,

public class ViewModelBase
{
    public List<MenuItem> MenuItems { get; set; }
    public string SomeRandomData { get; set; }
}

изменить 1-ую строку главной страницы

<%@ Master Language="C#" Inherits="System.Web.Mvc.ViewMasterPage<ViewModelBase>" %>

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

public class TestViewModel : ViewModelBase
{
    public string Message { get; set; }
}

Пример контроллера

public class TestController : Controller
{
    public ActionResult Index()
    {
        TestViewModel model = new TestViewModel();
        // passing selected menuitem as parameter
        model.MenuItems = createMenuItems("test");
        model.Message = "Hello World!";
        return View(model);
    }
    private List<MenuItem> createMenuItems(string selected)
    {
        // ...
    }
}

1-я строка просмотра

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<TestViewModel>" %>

Теперь вы можете получить доступ к ViewModelBase с главной страницы и TestViewModel с viewpage:)

Добавить

<add namespace="yourproject.Models"/>

в раздел 'namespaces' в web.config, так что вам не нужно вводить оператор import на каждой странице просмотра.

0 голосов
/ 11 марта 2010

Вы можете использовать карту сайта и несколько хитростей для этого.

http://www.asp.net/(S(pdfrohu0ajmwt445fanvj2r3))/learn/mvc/tutorial-20-cs.aspx

0 голосов
/ 11 марта 2010

Возможно, вы захотите взглянуть на некоторые видео, опубликованные на сайте ASP.Net. Есть учебники и скринкасты, демонстрирующие методы, о которых вы спрашиваете. http://www.asp.net/mvc

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