#c# #asp.net-mvc
#c# #asp.net-mvc
Вопрос:
У меня есть список сборов, которые я хочу отобразить в виде списка для различных страниц моего веб-сайта. В зависимости от страницы, есть определенная информация, которую я хочу опустить, чтобы устранить беспорядок и избыточность.
Например, если я просто перечисляю все сборы в системе, я бы хотел перечислить описания сборов, компании и сайта, к которым они принадлежат, в каждой строке. Где как, если бы я просто перечислял сборы на странице компании, я бы опустил название компании в каждой строке. И снова, если бы я был на странице сайта компании, я бы перечислил только описание платы.
Я думал об использовании частичных представлений и переменных в viewmodels для определения операторов if / else о том, когда какую информацию опускать. Но это действительно быстро усложнилось; Мне было любопытно, есть ли другой подход, который был бы лучше.
Я просмотрел Html.RenderAction, но дополнительный html-запрос не является жизнеспособным вариантом.
public class Customer
{
// has some sites
public IEnumerable<Site> Sites { get; set; }
}
public class Site
{
// sites has some fees
public IEnumerable<Fee> Fees { get; set; }
}
public class Fee
{
// descriptions, amount, etc...
}
Ответ №1:
Что вы подразумеваете под дополнительным запросом HTML? renderaction не выполняет другой http-запрос, если это то, о чем вы думаете… Я думаю, что RenderAction на самом деле является отличным решением для этого. Таким образом, логика выбора представления может поддерживаться в методе контроллера
Комментарии:
1. Из того, что я читал в других блогах и документации онлайн, это действие визуализации вызывает новый цикл http-запроса для генерации этой части страницы. Но если то, что вы сказали, правда, то это определенно было бы жизнеспособным решением. Спасибо.
2. внутренне это происходит с точки зрения конвейера, но это не означает, что новый вызов отправляется от клиента к серверу. Вы должны учитывать незначительные последствия для производительности (хотя всегда измеряйте)