Я хочу отправить модель в представление, состоящее из другой модели.Проблема в том, что я не могу получить доступ к атрибутам составленной модели в поле зрения.Основная модель - 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Модель администратора имеет все значения, но все равно ошибка