Новое в MVC - как мне создать представление, которое имеет ссылки на контроллеры? - PullRequest
0 голосов
/ 04 марта 2011

Это, безусловно, основной вопрос, но я достаточно новичок в MVC (и ASP.NET). Я даже не знаю, как задать вопрос, не объясняя его ...

Я хочу иметь одну вкладку на главной странице, которая загружает представление со ссылками на другие представления. Цель состоит в том, чтобы создать одно представление «Администратор», которое содержит ссылки (ссылки на действия?) На различные контроллеры / действия / представление для поддержки основных таблиц для моей базы данных. Все они будут защищены фильтром авторизации.

Итак, на главной вкладке будет написано Admin. Это должно загрузить представление с ссылками действий на контроллер / представление для TableA, TableB и т. Д. Нажав на одну из этих ссылок, я должен перейти к представлению, где я могу выполнять операции CRUD для этой конкретной таблицы. Я их уже построил, но использую представление Shared / Site.Master, чтобы добраться до каждой таблицы, создавая отдельную вкладку для каждой таблицы - не хорошо.

Я представляю вертикальный список интерактивных имен таблиц.

Это достаточно ясно? Я даже не уверен в терминологии, которая мне нужна здесь ...

Спасибо, Dave

Ответы [ 2 ]

2 голосов
/ 04 марта 2011

Итак, рекомендуем вам прочитать руководство NerdDinner как можно скорее, оно охватывает все основы.

То, что вам нужно, это AdminController. действие index этого возвратит представление. файл View, где вы будете размещать ваши actionлинки.

Главная страница, тогда просто позвоните

@Html.ActionLink("Admin", "index", "admin");

и это должно сгенерировать искомую ссылку, при условии, что вы еще не взломаны с маршрутизацией.

0 голосов
/ 04 марта 2011

Вот идея для строго типизированных ссылок действий, основанная на методе расширения SharpArch .

public IHtmlString ActionLink<T>(this HtmlHelper htmlHelper, Expression<Action<T>> action, string linkText) where T : Controller
{
  var methodCall = action.Body as MethodCallExpression;
  if (methodCall == null)
    throw new ArgumentException("Action must be a method call", "action");

  var actionName = methodCall.Method.Name;
  var controllerName = GetControllerName(typeof(T));

  return htmlHelper.ActionLink(linkText, actionName, controllerName);
}

public static string GetControllerName(Type controllerType)
{
  return controllerType.Name.Substring(0, controllerType.Name.Length - "Controller".Length);
}

Тогда вы можете использовать этот способ:

@Html.ActionLink<HomeController>(c => c.Index(), "My Home Index")

Пожалуйста, имейте в виду, что это просто идея, еще не проверенная.

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

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