2011-02-18 77 views
1

我的網絡應用程序是基於另一種解決方案構建的解決方案。基礎解決方案旨在成爲多種產品的平臺。大多數情況下,這可以正常工作,但當我創建特定於產品的視圖時會發生奇怪的事情。爲什麼我的ascx文件不能找到屬性後面的代碼?

我使用ViewUserControl<SomeViewModel>爲我的代碼在類後面。在我的代碼背後,我可以訪問this.Model以及我期望從這個課程中學到的所有其他好東西。但是在我的ascx文件中,當我嘗試訪問this.ModelViewUserControl中定義的其他屬性時,會出現紅色的波浪線。當我嘗試訪問我的代碼中直接定義的屬性時,我也會得到紅色的squiggley線。

更有趣的是,我從這裏沒有得到任何真正的錯誤。該視圖在運行時呈現得很好,不會給我任何構建錯誤。但我的ascx文件認爲會出現錯誤。如果我在平臺名稱空間中創建了完全相同的視圖,它工作正常。沒有紅色的波浪。

我覺得這真的很煩人。它不是以任何方式顯示屏幕,但是如果我要使用帶有intellisense和所有爵士樂的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不能或不使用代碼在後面,我很抱歉,這是馬術曲棍球。這個項目已經存在多年,並且有一個廣泛使用的產品在其上運行。我的產品只是剛剛進入平臺。平臺解決方案使用遍佈整個地方的代碼,並且工作正常。事實上,在我的產品解決方案中,它在運行時也能正常工作,我只是遇到了問題,即我的ascx文件似乎並不瞭解我的代碼。此外,ViewUserControlSystem.Web.MVC類。你還會告訴我背後的代碼不在ASP.NET MVC中使用嗎?

+3

你不應該在ASP.NET MVC中使用代碼。你可以發佈一些代碼嗎? – 2011-02-18 15:46:03

+0

這使我很困惑。如果不使用代碼,那麼我將如何訪問我的模型的屬性?後面的代碼是我指定我的模型屬於某種類型的地方。我不知道我還能得到什麼。 – Samo 2011-02-18 16:16:53

+0

您使用的是什麼版本的MVC?我正在使用MVC 3,我沒有看到任何代碼背後的文件。我稱之爲「後面的代碼」是Controller和Model。 – 2011-02-18 16:47:34

回答

0

由於您正在開發MVC,因此無法使用代碼。相反,你覺得在你.acsx文件的頂部添加此內容:

<%@ Import Namespace="Namespace.Model" %> 

然後你就可以訪問你在裏面有一切,而不需要這麼多的併發症。

0

ASP.NET MVC不使用後面的代碼。這聽起來像是在混合使用ASP.NET MVC和ASP.NET WebForm頁面。我建議你看一看http://www.asp.net/mvc。它有一些關於MVC入門的好教程,以及它的工作原理。

相關問題