【发布时间】:2011-06-29 22:08:50
【问题描述】:
我的网络应用是建立在另一个解决方案之上的解决方案。基本解决方案旨在成为多种产品的平台。在大多数情况下,这可以正常工作,但是当我创建特定于产品的视图时会发生奇怪的事情。
我正在使用ViewUserControl<SomeViewModel> 作为我的代码后面的类。在我后面的代码中,我可以访问this.Model 以及我期望从这个类中获得的所有其他好东西。但是在我的 ascx 文件中,当我尝试访问this.Model 或ViewUserControl 中定义的其他属性时,我得到了红色的波浪线。当我尝试访问直接在后面的代码中定义的属性时,我也会得到红色的波浪线。
更有趣的是,我没有从中得到任何真正的错误。该视图在运行时渲染得很好,并且没有给我任何构建错误。但是我的 ascx 文件认为会有错误。如果我在平台命名空间中创建完全相同的视图,它就可以正常工作。没有红色曲线。
我觉得这真的很烦人。无论如何,它都不是一个阻碍,但如果我要使用带有智能感知和所有爵士乐的 IDE,我肯定希望它能够正常工作,并获得应该存在的属性。
还有其他人遇到过这种情况吗?你知道解决这个问题的方法吗?
谢谢!
编辑
有人要求我发布一些代码。下面是代码:
namespace MyProject.MyProduct.Web.Views
{
public class EditSearch : ViewUserControl<SearchResultsViewModel>
{
public bool IsSearchTypeA()
{
...............
}
public bool IsSearchTypeB()
{
...............
}
}
}
这是我的 ascx:
<%
if (!this.IsSearchTypeB())
{
string categoryPageTitle = this.Model.SearchWidgetParameters.Search.CategoryPageTitle;
string categoryPageUrl = this.Model.SearchWidgetParameters.Search.Filters.CategoryPageUrl;
if (!string.IsNullOrEmpty(categoryPageUrl))
{
%> <div id="coid_website_backtoCategoryPageLink"> <%
string tocGuid = this.Model.SearchWidgetParameters.Search.Filters.TocGuid;
if (!string.IsNullOrEmpty(tocGuid))
{
categoryPageUrl += "?guid=" + tocGuid;
}
var backToLink = new HyperLink();
if (this.IsSearchTypeA())
{
backToLink.Text = "Edit Search";
}
else
{
backToLink.Text = "Back to " + TranslatedHtmlTextWriter.Translate(categoryPageTitle);
}
backToLink.NavigateUrl = TransactionOperations.AddContextToUrl(categoryPageUrl.StartsWith("/Browse/") ? categoryPageUrl : "/Browse/" + categoryPageUrl,
WebsiteTransitionType.Default, // Requested: CategoryPage
TransactionOperations.DefaultContextData);
backToLink.RenderControl(this.Writer);
%>
</div>
<%
}
}
%>
编辑
对于那些告诉我 ASP.NET MVC 不能或不使用背后代码的人,我很抱歉,但这是马曲棍球。该项目已经存在多年,并且有一个广泛使用的产品在其上运行。我的产品只是最近才跳上平台。 Platform 解决方案在所有地方都使用代码,并且运行良好。事实上,它在我的产品解决方案中运行时也可以正常工作,只是我的 ascx 文件似乎不知道我的代码背后的问题。此外,ViewUserControl 是一个 System.Web.MVC 类。你还要跟我说 ASP.NET MVC 中不使用后面的代码吗?
【问题讨论】:
-
您不应该在 ASP.NET MVC 中使用代码。可以发一些代码吗?
-
这让我很困惑。如果不使用后面的代码,那么我将如何访问我的模型的属性?后面的代码是我指定我的模型属于某种类型的地方。我不知道我还能如何获得这些属性。
-
你使用的是什么版本的 MVC?我正在使用 MVC 3,但在文件后面看不到任何代码。我所说的“代码背后”是控制器和模型。
-
你应该在
-
Inherits="System.Web.Mvc.ViewPage
抱歉,无法处理它在现在进入时发布的问题
标签: c# asp.net-mvc view code-behind