Несколько ссылок на одно и то же представление, но динамически отображают данные в зависимости от значения? - PullRequest
0 голосов
/ 16 мая 2018

Я использую .NET MVC, и мне нужны эти 5 ссылок для всех ссылок на одно представление, но данные этого следующего представления динамически отображаются в зависимости от ссылки, по которой щелкнули из-за атрибута, который к нему прикреплен.(например, идентификатор магазина).

Таким образом, если пользователь щелкает первую ссылку в текущем представлении, то представление StoreProducts будет отображать только данные на основе этого значения StoreID, связанного с этим хранилищем.(Передача значения storeID на основе ссылки, по которой щелкнули).

<a asp-action="StoreProducts">Store1</a> |
<a asp-action="StoreProducts">Store2</a> |
<a asp-action="StoreProducts">Store3</a> |
<a asp-action="StoreProducts">Store4</a> |
<a asp-action="StoreProducts">Store5</a> |

Я подумал, что, возможно, ViewBag или ViewData будут работать, но я не могу выяснить синтаксис для него или есть ли более эффективные способы сделать это.

Как передать или прикрепить это значение storeID на основе нажатой ссылки?

Ответы [ 3 ]

0 голосов
/ 16 мая 2018

Я не знаю, является ли это хорошим решением или нет, но все же я попытаюсь объяснить: сначала все у вас будет пять ActionLink в вашем представлении.

@Html.ActionLink("First Link","Index",new{id=1},new{@class="btn btn-primary"})
@Html.ActionLink("Second Link","Index",new{id=2},new{@class="btn btn-primary"})
@Html.ActionLink("Third Link","Index",new{id=3},new{@class="btn btn-primary"})
@Html.ActionLink("Fourth Link","Index",new{id=4},new{@class="btn btn-primary"})
@Html.ActionLink("Fifth Link","Index",new{id=5},new{@class="btn btn-primary"})

Затем вам нужно создать actionMethodкак показано ниже.

public ActionResult Index(int id)
{
   return view(id);
}

Затем снова в вашем представлении

@model int //binding data in view
......
......
@if(Model==1)
{
   //display view 1
}
elseif(Model==2)
{
   //display view 2
}
....
.....
else if(Model==5)
{
  //display view 5
}

Я надеюсь, что это работает!

0 голосов
/ 16 мая 2018

В продолжение начатого вами решения на основе помощника по тегам, а также помощника по тегу asp-action MVC может позволить вам назначить аргумент маршрута с помощью asp-route-{value}.

<a asp-action="StoreProducts" asp-route-id="1">Store 1</a> |
<a asp-action="StoreProducts" asp-route-id="2">Store 2</a> |
<a asp-action="StoreProducts" asp-route-id="3">Store 3</a> |
<a asp-action="StoreProducts" asp-route-id="4">Store 4</a> |
<a asp-action="StoreProducts" asp-route-id="5">Store 5</a>

Если вы используете стандартный маршрут в форме {controller}/{action}/{id}, это должно передать идентификатор параметру id вашего действия StoreProducts.

Подробно здесь.

0 голосов
/ 16 мая 2018

То, что вы ищете, вероятно, Html.ActionLink

@Html.ActionLink("text","action","controller",new {id = value},new{HtmlAttribute})

Что в вашем случае будет:

@Html.ActionLink("Store1","StoreProducts","controller",new {id = 1},null)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...