отправить модель, которая состоит из другой модели, в представление и как получить доступ к атрибутам - PullRequest
1 голос
/ 29 апреля 2019

Я хочу отправить модель в представление, состоящее из другой модели.Проблема в том, что я не могу получить доступ к атрибутам составленной модели в поле зрения.Основная модель - FacadeController и состоит из административной модели.представление принимает модель FacadeController, и тогда я не могу получить доступ к атрибутам модели администратора, как это."@Model.FacadeController.Admin"

Мои семестровые проекты зависят от этого, пожалуйста, помогите.Спасибо.

# this is the Admin Model #
public class Admins
    {
        public int Admin_Id { get; set; }
        public string UserName { get; set; }
        public string Email { get; set; }
        public string Password { get; set; }
        public string Image_path { get; set; }
        public HttpPostedFileBase Img { get; set; }

        //public AdoClass dataClass { get; set; }
        public Admins()
        {
            //dataClass = new AdoClass();
        }
    }
# this is the facadeController Model #
namespace EAProject.Models
{
    public class facadeController
    {
        public Admins Admin { get; set; }
        public facadeController()
        {
            Admin = new Admins();
        }
    }
}
#Controller #
public class Admin192_168Controller : Controller
    {
        public static facadeController facade;
        // GET: Admin192_168
        public ActionResult Index()
        {

            return View();
        }
        [HttpPost]
        public ActionResult Index(Admins currAdmin)
        {
            facade = new facadeController();
            facade.Admin = currAdmin;

            if (facade.LoginAdmin(facade.Admin))
            {
                currAdmin = facade.Admin;
                Session["AdminObj"] = currAdmin;
                if (Session["AdminObj"] == currAdmin)
                {
                    return RedirectToAction("Dashboard", "Admin192_168");
                }
            }
            return View();
        }
        [HttpGet]
        public ActionResult Dashboard()
        {
            if (Session["AdminObj"] != null)
            {
                Admins ad = Session["AdminObj"] as Admins;
                facade.Admin = ad;
                return View(facade);
            }
            return RedirectToAction("Index", "Admin192_168");
        }
        [HttpGet]
        public ActionResult Profile()
        {
            if (Session["AdminObj"] != null)
            {
                Admins ad = Session["AdminObj"] as Admins;
                return View(ad);
            }
            return RedirectToAction("Index", "Admin192_168");
        }
        [HttpPost]
        public new ActionResult Profile(Admins ad)
        {
            if(Session["AdminObj"] != null){
                Admins temp = Session["AdminObj"] as Admins;
                ad.Admin_Id = temp.Admin_Id;
                facade.Admin = ad;
                string filename = Path.GetFileNameWithoutExtension(facade.Admin.Img.FileName);
                string extension = Path.GetExtension(facade.Admin.Img.FileName);
                if(System.IO.File.Exists(temp.Image_path))
                {
                    System.IO.File.Delete(temp.Image_path);
                }
                filename = filename + extension;
                facade.Admin.Image_path = "~/images/Admin/" + filename;
                filename = Path.Combine(Server.MapPath("~/images/Admin/"), filename);
                Response.Write(Server.MapPath("~/images/Admin/" + "DefaultAdmin.PNG"));
                facade.Admin.Img.SaveAs(filename);
                if (facade.AdminEditProfile(facade.Admin))
                {
                    ad = facade.Admin;
                    Session["AdminObj"] = null;
                    if (Session["AdminObj"] == ad)
                    {
                        return RedirectToAction("Dashboard", "Admin192_168");
                    }
                }
            }
            return RedirectToAction("Index", "Admin192_168");
        }

        [HttpGet]
        public ActionResult Logout(bool op)
        {
            Session["AdminObj"] = null;
            return RedirectToAction("Index", "Admin192_168");
        }


        //This is to 
        /// <Add_the_Page_Dynamically>
        [HttpGet]
        public ActionResult Create_Pages()
        {
            if (Session["AdminObj"] != null)
            {
                Admins ad = Session["AdminObj"] as Admins;
                return View(ad);
            }
            return RedirectToAction("Index", "Admin192_168");
        }
        /// </Add_the_Page_Dynamically>

    }
}

# Dashboard.cshtml view#
@model EAProject.Models.facadeController

<section class="section">
    <h1 class="section-header">
        <div>
            Dashboard
        </div>
    </h1>
    <div>
        @Html.Partial("Sajjad",Model.Admin);
    </div>
</section>

# Sajjad.cshtml  Partial View#
@model EAProject.Models.Admins

<h5>@Model.UserName</h5>
<h5>@Model.Email</h5>


Ошибка и трассировка стека

Ошибка сервера в приложении '/'.Элемент модели, передаваемый в словарь, имеет тип «EAProject.Models.facadeController», но для этого словаря требуется элемент модели типа «EAProject.Models.Admins».Описание: во время выполнения текущего веб-запроса произошло необработанное исключение.Пожалуйста, просмотрите трассировку стека для получения дополнительной информации об ошибке и ее возникновении в коде.

Сведения об исключении: System.InvalidOperationException: Элемент модели, передаваемый в словарь, имеет тип 'EAProject.Models.facadeController', но для этого словаря требуется элемент модели типа 'EAProject.Models.Admins'.

Ошибка источника:

Во время выполнения текущего веб-запроса было сгенерировано необработанное исключение.Информацию о происхождении и местоположении исключения можно определить с помощью приведенной ниже трассировки стека исключений.

Трассировка стека:

[InvalidOperationException: Элемент модели, передаваемый в словарь, имеет тип 'EAProject.Models.facadeController ', но для этого словаря требуется элемент модели типа' EAProject.Models.Admins '.] System.Web.Mvc.ViewDataDictionary 1.SetModel(Object value) +175 System.Web.Mvc.ViewDataDictionary..ctor(ViewDataDictionary dictionary) +107 System.Web.Mvc.WebViewPage 1.SetViewData (ViewDataDictionary viewData) +49 System.Web.Mvc.WebViewPage.ConfigurePage (WebPageBase parentPage) +57 System.Web.WebPages. <> C__DisplayClass40_0.b__0 (писатель TextWriter) +218 System.Web.WebPages.HelperResult.WriteTo (писатель TextWriter) +10 System.Web.WebPaseRWWрезультат) +80 System.Web.WebPages.WebPageBase.RenderSurrounding (строковое частичное имя, действие 1 body) +63 System.Web.WebPages.WebPageBase.PopContext() +237 System.Web.WebPages.WebPageBase.ExecutePageHierarchy(WebPageContext pageContext, TextWriter writer, WebPageRenderingBase startPage) +98 System.Web.Mvc.RazorView.RenderView(ViewContext viewContext, TextWriter writer, Object instance) +235 System.Web.Mvc.BuildManagerCompiledView.Render(ViewContext viewContext, TextWriter writer) +107 System.Web.Mvc.ViewResultBase.ExecuteResult(ControllerContext context) +291 System.Web.Mvc.ControllerActionInvoker.InvokeActionResult(ControllerContext controllerContext, ActionResult actionResult) +13 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultFilterRecursive(IList 1, фильтры Int32 filterIndex, предконтекст ResultExecutingContext, Контроллер контекста ControlContext, actionResult actionResult) +56 System.Web.Mvc.ilkСписок 1 filters, Int32 filterIndex, ResultExecutingContext preContext, ControllerContext controllerContext, ActionResult actionResult) +420 System.Web.Mvc.ControllerActionInvoker.InvokeActionResultWithFilters(ControllerContext controllerContext, IList 1 фильтров, ActionResult actionResult) +52 System.Web.Mvc.Async. <> C__DisplayClass3_6.b__4 () +198 System.Web.Mvc.Async. <> C__DisplayClass3_1.b__1 (IAsyncResult asyncResult) +100.Web.Mvc.Async.WrappedAsyncResult 1.CallEndDelegate(IAsyncResult asyncResult) +10 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End () +49 System.Web.Mvc.Async.AsyncControllerActionInvoker.EndInvokeAction (IAsyncResult asyncResult) +27 System.Web.Mvc. <> C.b__15yncultinnerState) +11 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +29 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End () +49 System.Web.Mvc.Controller.EndExecuteCore (IAsyncResult asyncResult) +45 System.Web.Mvc. <> c.b__151_2 (IAsyncResult asyncResult, контроллер контроллера) +13 System.Web.Mvc.Async.WrappedAsyncVoid 1.CallEndDelegate(IAsyncResult asyncResult) +22 System.Web.Mvc.Async.WrappedAsyncResultBase 1.End () +49 System.Web.Mvc.Controller.EndExecute (IAsyncResult asyncResult) +26 System.Web.Mvc.Control.System.Web.Mvc.Async.IAsyncController.EndExecute (IAsyncResult asyncResult) +10 System.Web.Mvc. <> C.b__20_1 (IAsyncResult asyncResult, ProcessRequestState innerState) +28 System.Web.oidWync..End () +49 System.Web.Mvc.MvcHandler.EndProcessRequest (IAsyncResult asyncResult) +28 System.Web.Mvc.MvcHandler.System.Web.IHttpAsyncHandler.EndProcessRequest (IAsyncResult..Execute () +9874041 System.Web.HttpApplication.ExecuteStepImpl (шаг IExecutionStep) +48 System.Web.HttpApplication.ExecuteStep (шаг IExecutionStep, логический и завершенный в синхронном режиме) + 159

* 1034Модель администратора имеет все значения, но все равно ошибка

...