我经历了一些我无法弄清楚的疯狂......
我创建了以下类:
public abstract class AbstractView<T> : ViewPage<T> where T : class
这给了我一些有用的帮助,我在我的观点中使用它:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example>" %>
一切正常。现在我必须创建一个需要大量复杂渲染代码的视图,所以我想给我的视图一个代码隐藏,所以我可以将所有这些表示逻辑放在其中。
然而,当我这样做时:
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="Project.Web.Views.Examples.View" CodeBehind="~/Views/Examples/View.aspx.cs" %>
public class View : Project.Web.Mvc.AbstractView<Project.Domain.Entities.Example>
当我调试视图时,模型总是为null,后来给了我:
"The view 'View' or its master could not be found. The following locations were searched..."
怎么回事?
安德鲁
P.S。不要告诉我代码背后是邪恶的。我正在编写演示文稿特定的逻辑,以及很多。它不会在aspx中内联。
答案 0 :(得分:2)
您可以尝试使用代码旁边。我的意思是一个派生自AbstractView<T>
的类,只用于这一个视图。它实际上与代码隐藏相同。然后只需指向它而不是使用AbstractView<T>
。
此外,你的模型不会被挂起,直到OnLoad(可能更早,我自己从未做过),如果你试图在构造函数中使用它,这可能是你的问题。
否则,您可能希望查看使用ViewModel,以便您在ViewModel中执行自定义格式设置,而不是传递我假设的原始域对象,并将其传递给AbstractView<T>
。
答案 1 :(得分:0)
使用View作为您的类名可能不是一个好主意。使用更具体的东西。
我认为你在继承属性中指定的命名空间中声明了这个类吗?
答案 2 :(得分:0)
好吧,我的坏,模型在代码隐藏中没有准备好直到onload,我正在构造函数中做事。
奇怪的是,当MVC显然可以说“无法找到视图”时,只会抛出异常