ddgjgj Ответов: 0

Asp.net MVC распознает обычный текст как имя представления


Так вот какой вид :

div class="row">
    <div class="col-md-6" style="width:auto">
        @foreach (var module in Model)
        {
            if (module.Placeholder == "left" && module.PageId == "contact" && module.Control == "Tabelar2")
            {
                Html.RenderAction("Tabelar2", "ContentHtml", module.Control );
        }


            <br />
        }
    </div>



У меня есть поле в элементе управления базой данных, которое сохраняет имена элементов управления/actionresults/views, например
module.Control
показывает 3 слова (имена actionresults/views) из базы данных, списка новостей и Tabelar и Tabelar2.


В приведенном выше коде я говорю вручную, но как я могу это сделать , если :

if (модуль.Control = = "Tabelar2") / / tabelar2-это просто текст , а на самом деле имя actionresult в контроллере
{
Html. RenderAction ("Tabelar2"," ContentHtml", модуль.Контроль );
// than render module.control automatically

}


Итак, основываясь на module.control , затем визуализируйте этот элемент управления и распознайте его как actionresult/view , exmaple NewsList.chtml и визуализируйте это представление внутри div.

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

я только что объяснил выше этот вопрос.

David_Wimbley

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

Почему ты не можешь просто позвонить одному .RenderAction метод и передать все переменные вместо того, чтобы писать оператор if, чтобы увидеть, соответствует ли ваше действие/контроллер, а затем жестко кодировать те же значения, которые вы только что сделали в операторе if.

То есть то, что я думаю, что вижу, как ты делаешь, это

if(moduel.Control == "Tabelar2")
{
Html.RenderAction("Tabelar2", "ContentHtml", module.Control)
}


Почему бы просто не иметь свойств вашей модели скажем .ActionName и .ControllerName тогда все, что вам нужно сделать, это


Html.RenderAction(model.ActionName, model.ControllerName, module.Control)


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

0 Ответов