maysam_p82 Ответов: 1

У меня есть образец приложения MVC, но есть часть, которую я не понимаю


это приложение является приложением для интернет-магазина. Есть основной вид, что вы выбираете продукты.

Есть код, который я не понимаю:
<div class="col-md-3">
       <div class="categorywrap">
           <a href="~/Views/StoreFront/Index/1">
               <h2>Dairy</h2>
               <img src="~/Content/Images/dairy.png "alt="">
           </a>
       </div>
   </div>
   <div class="col-md-3">
       <div class="categorywrap">
           <a href="~/Views/StoreFront/Index/2">
               <h2>Meats</h2>
               <img src="~/Content/Images/meat.png" alt="" />
           </a>

<div class="categorywrap">
            <a href="~/Views/StoreFront/Index/3">
                <h2>Bakery</h2>
                <img src="~/Content/Images/bakery.png"  alt=""/>

            </a>
        </div>

Это вид витрины магазина/индекса:
@model Models.Category

@{
    ViewBag.Title = Model.Name;
}
<br />
<br />
<div class="row">
    <div class="col-xs-12 col-md-3">
        <ul class="nav nav-pills nav-stacked">
            @if(Model.Name=="Dairy")
            {
                <li class="active">
                    <a href="~/Views/StoreFront/Index.cshtml/1">DAIRY</a>
                </li>
            }else
            {
                <li>
                    <a href="~/Views/StoreFront/Index.cshtml/1">DAIRY</a>
                </li>
            }
            @if (Model.Name == "Meats")
            {
                <li class="active">
                    <a href="~/Views/StoreFront/Index.cshtml/2">MEATS</a>
                </li>
            }
            else
            {
                <li>
                    <a href="~/Views/StoreFront/Index.cshtml/2">MEATS</a>
                </li>
            }
            @if (Model.Name == "Bakery")
            {
                <li class="active">
                    <a href="~/Views/StoreFront/Index.cshtml/3">BAKERY</a>
                </li>
            }
            else
            {
                <li>
                    <a href="~/Views/StoreFront/Index.cshtml/3">BAKERY</a>
                </li>
            }
            @if (Model.Name == "Fruits")
            {
                <li class="active">
                    <a href="~/Views/StoreFront/Index.cshtml/4">FRUIT & VEG</a>
                </li>
            }
            else
            {
                <li>
                    <a href="~/Views/StoreFront/Index.cshtml/4">FRUITS & VEG</a>
                </li>
            }
        </ul>
    </div>
    <div class="col-xs-12 col-md-9">
        <div class="row">
            @foreach(var product in Model.products)
            {
                <div class="col-xs-12 col-md-3">
                    <div class="thumbnail">
                        <img class="img-responsive" src="~/Content/Images/Prod/@(product.Name).png" />
                        <div class="caption text-center">
                            <p>
                                Name:<span>@product.Name</span>
                            </p>
                            <p>
                                Price:<span>@product.price $</span>
                            </p>
                            <p class="text-center">
                                @Html.ActionLink("Add to cart", "AddToCart", new { id = product.ID }, new { @class="btn btn-info"})
                            </p>
                        </div>
                    </div>
                </div>
            }
        </div>
    </div>
</div>


Что я уже пробовал:

This code "<pre> <a href="~/Views/StoreFront/Index/3">
"
относится, например, к "index/3", в то время как у нас есть только index view(один вид) в папке Storefront views! для каждого продукта нет вида"3", "2" или "1". почему? Похоже, он создает страницу во время выполнения.
спасибо

Richard Deeming

Вы уверены, что это приложение MVC? В MVC вы не связываетесь с представлениями; вы связываетесь с методами действий на контроллере. То /1 будет представлять собой параметр маршрута, который будет передан методу действия.

maysam_p82

Да, я уверен. Так ты можешь мне помочь? Это всего лишь & lt;a href ... storefront/index/3

David_Wimbley

Я думаю, что это просто веб-приложение, написанное с использованием синтаксиса razor с использованием веб-фреймворка microsofts...я не помню названия, но это была быстрая/простая настройка, которая позволила вам установить IIS, mysql, php среди прочего...вышел несколько лет назад, но он подтолкнул синтаксис razor как способ создания веб-приложений. ОП, вероятно, свалил это в кучу под MVC.

maysam_p82

так что же я могу сделать?

maysam_p82

Хорошо. Тогда как я могу заменить код чем-то правильным? Я хочу, чтобы, когда пользователь нажал на продукт, перенаправить его на соответствующую страницу. Создаю ли я контроллер? и что я должен поместить в этот контроллер?

David_Wimbley

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

Вам лучше найти учебник (https://docs.microsoft.com/en-us/aspnet/mvc/overview/getting-started/introduction/getting-started) и работать через них, чтобы узнать, как использовать фреймворк.

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

1 Ответов

Рейтинг:
0

David_Wimbley

Не видя всей вашей кодовой базы, основываясь на вашем вопросе, я думаю, что вы говорите о маршруте URL-адреса.

Во-первых, я не верю, что вы действительно используете MVC, скорее я думаю, что вы используете синтаксис razor для создания своего приложения вместо фактического фреймворка MVC.

С учетом сказанного, я думаю, что ваш ответ, который вы ищете, таков

В MVC структура папок обычно соответствует контроллерам, а в папке на основе контроллера находятся ваши представления, соответствующие действиям. Ваш URL-адрес

<a href="~/Views/StoreFront/Index/3">
это наводит меня на мысль, что ваш "контроллер" - это витрина магазина, а ваше представление/действие-это "индекс" или "Index.cshtml". Затем после индекса идет параметр, передаваемый в представление. опять же, не видя вашей кодовой базы, Часть" /3 " Вашего URL-адреса соответствует параметру, который передается в действие вашего представления.

ЭКС:

public class StoreFront : Controller
{
    public ActionResult Index(int id)
    {
         return View(id);
    }
}


Таким образом, /3 будет присвоен id. Не вдаваясь слишком глубоко в то, как работают маршруты, если бы вы передали /4, /5, /6, Эти значения были бы переданы вашему представлению. Однако, поскольку я не думаю, что вы используете фреймворк MVC, а только синтаксис razor для создания своих страниц, вам, вероятно, придется получить это значение из URL-адреса с помощью jquery/javascript.

Этот вид URL-адреса-это то, что вы сделали бы для передачи идентификатора продукта или чего-то подобного, чтобы у вас был один шаблон/представление, которое может отображать множество различных версий одной и той же страницы на основе продукта.