我的网络应用是基于另一种解决方案构建的解决方案。基础解决方案旨在成为多种产品的平台。在大多数情况下,这种方法很好,但在创建特定于产品的视图时会发生奇怪的事情。
我正在使用ViewUserControl<SomeViewModel>
作为我课后的代码。在我的代码背后,我可以访问this.Model
以及我期望从这个类中获得的所有其他好东西。但是在我的ascx文件中,当我尝试访问this.Model
或ViewUserControl
中定义的其他属性时,我得到了红色的波浪线。当我尝试访问我后面的代码中直接定义的属性时,我也得到了红色的波浪线。
更有趣的是,我没有从中得到任何真正的错误。该视图在运行时呈现正常,并没有给我任何构建错误。但我的ascx文件认为会有错误。如果我在平台名称空间中创建完全相同的视图,它可以正常工作。没有红色的波浪。
我发现这真的很烦人。它无论如何都不是一个表演终结者,但是如果我要使用具有intellisense和所有爵士乐的IDE,我肯定希望它能够正常工作,并选择应该存在的属性。 / p>
有没有其他人遇到这个?你知道解决这个问题的方法吗?
谢谢!
修改
要求我发布一些代码。这是背后的代码:
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不能或不使用代码的人,我很抱歉,但这是马曲棍球。该项目已经存在多年,并且有一个广泛使用的产品在其上运行。我的产品最近刚刚进入平台。平台解决方案使用遍布各处的代码,并且工作正常。事实上,它在我的产品解决方案中运行时运行良好,我只是遇到问题,我的ascx文件似乎不知道我的代码背后。此外,ViewUserControl
是System.Web.MVC
类。你还在告诉我,ASP.NET MVC中没有使用后面的代码吗?
答案 0 :(得分:0)
由于您正在开发MVC,因此无法使用代码。相反,您如何考虑在.acsx文件的顶部添加它:
<%@ Import Namespace="Namespace.Model" %>
然后你就可以访问那里的所有内容而不会有太多的复杂情况。
答案 1 :(得分:0)
ASP.NET MVC不使用代码。听起来好像是在混合使用ASP.NET MVC和ASP.NET WebForm页面。
我建议你看看http://www.asp.net/mvc。它有一些关于MVC入门及其工作原理的精彩教程。