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

отаю над основным приложением.

Это основной контроллер:

   public ActionResult Index()
    {
        var all = _context.mainz.ToList();
        var vm = new mainViewModel()
        {
            main_lst = all
        };

        return View(vm);
    }

    public ActionResult Details()
    {
        var dtl = _context.mainz.ToList();
        var vm = new mainViewModel()
        {
            main_lst = dtl
        };
        return View(vm);
    }


       public ActionResult count()
    {
        var ct = (from i in _context.mainz
                  where i.event_title != null
                  select i).ToList();
        var vm = new countVm()
        {
          count = ct
        };
        return View(vm);
    }

В этом контроллере методы Index и Details связаны с двумя различными видами бритвы следующим образом:

Это бритва для индекса

@model testtt.ViewModel.mainViewModel

@{
ViewBag.Title = "Index";
Layout = "~/Views/Shared/_Layout.cshtml";
}



<ul>
@foreach (var item in Model.main_lst)
{
    <li>@item.event_title</li>
}

</ul>

Это бритва для деталей

@model testtt.ViewModel.mainViewModel
@{
ViewBag.Title = "Details";
Layout = "~/Views/Shared/_Layout.cshtml";
 }

<ul>
@foreach (var item in Model.main_lst)
{
   <li>@item.event_description</li>
}
</ul>

Это mainViewModel

namespace testtt.ViewModel
{
public class mainViewModel
{
    public List<main> main_lst { get; set; }
    public mainViewModel()
    {
        main_lst = new List<main>();
    }
}
}

Теперь в главном контроллере выше, если вы заметили, у меня есть третий метод count, который связан с частичным представлением следующим образом:

@model testtt.ViewModel.countVm
<p>count is @Model.count.Count()</p>

И countVm или (модель представления счета) выглядит следующим образом:

namespace testtt.ViewModel
{
public class countVm
{
    public List<main> count { get; set; }
    public countVm()
    {
        count = new List<main>();
    }
}
}

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

 @Html.Partial("count")

Но когда я добавляю его в представления индекса или детали бритвы, он генерирует ошибку как:

The model item passed into the dictionary is of type 'testtt.ViewModel.mainViewModel', but this dictionary requires a model item of type 'testtt.ViewModel.countVm'.

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

Короче говоря, я ищу способ извлечения данных из двух моделей представлений в одном виде бритвы?

Ответы на вопрос(1)

Ваш ответ на вопрос