codegeekalpha Ответов: 1

Реализация if else в MVC razor


Я довольно новичок в этом деле. ASP.Net MVC. Извините, если мой вопрос покажется вам глупым. но я не уверен, как заставить вещи работать между представлениями и контроллерами.
У меня есть список продуктов с ценой и статическим выпадающим списком для реализации стратегий скидок на основе выбранного плана скидок.

Вот моя страница продукта
<pre><table class="table">
    <tr>
        <th>
            @Html.DisplayNameFor(model => model.ProductName)
        </th>
        <th>
            @Html.DisplayNameFor(model => model.ProductPrice)
        </th>
        <th></th>
    </tr>

@foreach (var item in Model) {
    <tr>
        <td>
            @Html.DisplayFor(modelItem => item.ProductName)
        </td>
        <td>
            @Html.DisplayFor(modelItem => item.ProductPrice)
        </td>
       
            <td>

                @Html.DropDownList("Status", new List<SelectListItem>

                 {
                    new SelectListItem{ Text="Student Discount", Value = "1" },
                    new SelectListItem{ Text="Loyalty Discount", Value = "0" }
                 })
                
            </td>

        <




вот мой контроллер Add product

public ActionResult Index()
       {
           Customers customer = new Customers();

           return View(db.Products.ToList());
       }


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

Я хочу показать сниженную цену на странице, основанную на выборе из выпадающего списка.

Я реализую это приложение windows form stretegy в своем приложении MVC .
Но я не уверен, как справиться с этим в представлениях и контроллере.

Любые намеки будут оценены по достоинству.
вот код из приложения windows form
 private void btnApplyDiscounts_Click(object sender, EventArgs e)
        {
            Customer customer = new Customer();
            if (chkLoyalty.Checked && chkStudent.Checked)
            {
                customer.SetDiscountStrategy(new LoyalStudentDiscount());
            }
            else if (chkLoyalty.Checked)
            {
                customer.SetDiscountStrategy(new LoyaltyDiscount());
            }
            else if (chkStudent.Checked)
            {
                customer.SetDiscountStrategy(new StudentDiscount());
            }
            else
            {
                customer.SetDiscountStrategy(new NoDiscount());
            }

            decimal price = customer.ApplyDiscount(numTotalSale.Value);
            lblFinalPrice.Text = price.ToString("C");
        }
    }
}

F-ES Sitecore

Вы не всегда можете легко" конвертировать " приложение Windows Forms в веб-сайт, вам нужно оценить разницу между приложением Windows и веб-сайтом. В приложении Windows графический интерфейс, бизнес-логика и т. д. управляются вашим .net-кодом, а ваш .net-код полностью управляется событиями. В веб-приложении ваш .net-код действительно получает "события" только через пост-бэк страницы, а ваш .net-код создает только начальную html-страницу, после чего передним концом можно динамически манипулировать только с помощью javascript.

1 Ответов

Рейтинг:
0

Graeme_Grant

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

Если вы хотите внести изменения на стороне клиента, после того как страница будет загружена в браузер, то вам нужно будет использовать javascript/jquery/etc...


codegeekalpha

разве это невозможно только с razor и C#?

Graeme_Grant

Вопрос, который нужно задать себе: "хочу ли я сделать это на стороне клиента или на стороне сервера?" Если клиент, то javascript, как уже упоминалось.