Ошибка RenderBody во втором макете в asp .net - PullRequest
0 голосов
/ 15 октября 2018

Ошибка: Следующие разделы были определены, но не были отображены для страницы макета "~ / Views / Shared / _AdminLayout.cshtml": "partalviewBanner ".

При первой публикации StackOverflowflow, пожалуйста, извините за плохой вопрос.

Когда я пытаюсь вызвать actionresult из new controller с новым _layout, renderbody() в новом макетепо-прежнему возвращает oldIndex.cshtml, а не определенный newIndex.cshtml.Почему это?Цель состоит в том, чтобы иметь adminLayout со своими собственными взглядами.Таким образом, при вызове метода устанавливается новый макет с новым представлением.

    UserController:
     [HttpPost]
        [ValidateAntiForgeryToken]
        public ActionResult LoggInnModal(LogInVM brukerlogin)
        {
            if (ModelState.IsValid)
            {
                CustomerVM kunde = new CustomerBLL().UserLogIn(brukerlogin);
                if (kunde != null)
                {
                    Session["Kunde"] = kunde;

                    if(kunde.Admin)
                    {
                        return RedirectToAction("AdmIndex", "Admin");
                    }
                    return Redirect(Request.UrlReferrer.PathAndQuery);
                }
            }

     public class AdminController : Controller
    {
        // GET: Admin
        public ActionResult AdmIndex()
        {
            return View();
        }
    }

    _ViewStart.cshtml:
    @using Oblig1.Model

@{
    CustomerVM customer = (CustomerVM)HttpContext.Current.Session["Customer"];
}

@{
    if (customer != null)
    {
        if (customer.Admin)
        {
            Layout = "~/Views/Shared/_AdminLayout.cshtml";
        }
        else
        {
            Layout = "~/Views/Shared/_Layout.cshtml";
        }
    } else
    {
        Layout = "~/Views/Shared/_Layout.cshtml";
    }

}

Все до сих пор кажется, что оно работает, но когда браузер считывает ошибки AdminLayout.cshtml, возникает ошибка.

Теперь, когда читатель входит в этот раздел, renderbody по-прежнему вызывает другой .cshtml, а не тот, который определен в AdminController.В этом случае происходит сбой, поскольку в новом макете не существует необходимых частичных представлений.

    _AdminLayout.cshtml
    <!DOCTYPE html>

<html>
<head>
    <meta name="viewport" content="width=device-width" />
    <title>@ViewBag.Title</title>
</head>
<body>
    <div>
       **This is where it calls the oldIndex.cshtml and not the newIndex.cshtml**
        @RenderBody()
    </div>
</body>
</html>

Спасибо.Если мой вопрос недостаточно определен, пожалуйста, скажите мне.

Ответы [ 2 ]

0 голосов
/ 21 октября 2018

Хехе, кажется, ситуация с макетом была полностью функциональной.Проблема заключалась в том, что модальная функция JavaScript LogOn заставляла веб-страницу перезагружаться со старым макетом.

function LoggInnModal(resultat) {
var melding;
try {
    melding = JSON.parse(resultat);
} catch (feil) {
    melding = null;
}
$("#epostmelding").empty();
$("#passordmelding").empty();
if (melding != null) {
    if (melding == "admin") {
        //sets the admin.frontpage
        window.location.replace(AppUrl.Admin); //SOLUTION!
    } else {
        if (melding == "Oppgi epostadresse") {
            $("#epostmelding").append(melding);

        } else {
            $("#passordmelding").append(melding);
        }
    }
} else {
    $("#loggInnModal").modal("hide");
    window.location.reload(); //PROBLEM!

    console.log();
}
0 голосов
/ 15 октября 2018

Похоже, что вы определили раздел с именем "componentviewBanner" на своей странице макета mater, но ничего не включили в этот раздел в своем представлении.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...