ASP.NET MVC. Не знаю, как использовать Url.action для передачи объекта в контроллер - PullRequest
4 голосов
/ 07 апреля 2009

Я новичок в asp.net MVC. Мне удалось создать мой вид и отобразить данные (Gridview). Кроме того, я смог создать гиперссылку (используя Url.Action), передавая строковые и целые типы. Однако я хочу создать гиперссылку, на которую ссылается более сложный тип. Класс, связанный с моим представлением, имеет ссылку на список. Я хочу создать дополнительный ActionResult в моем контроллере, который получит список параметров (см. Ниже)

public ActionResult ViewItems(List<Items> c)
{            
    return View(c);
}

Моя идея состоит в том, чтобы иметь возможность передать этот список контроллеру, и тогда контроллер вызовет соответствующее представление. Я пытался (см. Ниже), но я просто пустую.

<asp:HyperLink ID="LinkContractID" runat="server" NavigateUrl='<%#Url.Action("ViewItems", new {c = **((Contract)Container.DataItem).ContractItems.ToList<Items>(**)}) %>'
Text='<%# Eval("ContractId") %>'></asp:HyperLink>

Ответы [ 3 ]

3 голосов
/ 08 апреля 2009

Как и в предыдущем ответе, вы не используете элементы управления asp. Однако у Html.ActionLink есть свои плюсы и минусы, но не очень хорошо, если вы хотите поместить ссылку вокруг изображения, например. В этом случае синтаксис будет

<a href="<%= Url.Action(
   "ShowListPage", "MyController", new { modelId = 101 }) %>">
   <img src="img.gif" />
</a>

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

public MyModel(int modelId)
{
   this.TheListThatHoldsTheGridData = MyDataLayerProc(modelId);
}

Таким образом, вы можете выполнять свои действия в контроллере MyController, возвращая представление ShowListPage (связанное с экземпляром MyModel), например, так:

public ActionResult ShowListPage(int modelId)
{
   return View(new MyModel(modelId));
}

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

Mark

1 голос
/ 07 апреля 2009

Если вы ищете сетку, этот урок показывает, как создать сетку с MVC.

0 голосов
/ 07 апреля 2009

С MVC вы не должны использовать Gridview и asp: control. Если вы хотите создать ссылку, просто используйте <% = Html.ActionLink (...)%> с необходимыми параметрами.

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