2012-07-24 157 views
0

我刚更改了一些代码,将我数据库中所有葡萄酒的全部计数添加到视图模型中。当我复制所有更新的文件到我的服务器,我不断收到以下错误:当我更新服务器文件时,MVC3网站未更新

'vf2.ViewModels.MyAccountViewModel' does not contain a definition for 'DBWineCount' and no extension method 'DBWineCount' accepting a first argument of type 'vf2.ViewModels.MyAccountViewModel' could be found (are you missing a using directive or an assembly reference?)

这在我的dev的盒子做工精细,并且该文件是相同的。我编辑我的web.config文件强制编译,但我仍然有这个问题。如果我尝试使用ViewBag,它不会抛出错误 - 但它返回一个空值。这里会发生什么?下面是我的代码示例:

namespace vf2.ViewModels 
{ 
    public class MyAccountViewModel 
    { 
     public DistributorUser DistributorUser { get; set; } 
     public ProducerUser ProducerUser { get; set; } 
     public RestaurantUser RestaurantUser { get; set; } 
     public UserObj UserObj { get; set; } 

     [Display(Name="Email")] 
     public string MembershipEmail { get; set; } 

     public string GetFullName() 
     { 
      return this.UserObj.FirstName + " " + this.UserObj.LastName; 
     } 

     public string sInstitutionTab { get; set; } 
     public string DBWineCount { get; set; } 

    } 
} 

[Authorize] 
     public ActionResult MyAccount() 
     { 
      MyAccountViewModel myAccount = new MyAccountViewModel(); 
      MembershipUser muCurrent = Membership.GetUser(true); 
      muCurrent = Membership.GetUser(true); 

      myAccount.UserObj = db.UserObjs.Find(muCurrent.ProviderUserKey); 
      myAccount.MembershipEmail = muCurrent.Email; 
      int iDocCount = 0; 
      int iRevCount = 0; 

      if (myAccount.UserObj != null) 
      { 
       myAccount.DBWineCount = string.Format("{0:n0}",db.Wines.Count()); 

       switch ((UserTypesEnum)myAccount.UserObj.UserTypeID) 
       { 
        case UserTypesEnum.Producer: 
         myAccount.ProducerUser = db.ProducerUsers.Find(muCurrent.ProviderUserKey); 
         myAccount.sInstitutionTab = "My Producer"; 
         myAccount.ProducerUser.Producer.Wines.ToList().ForEach(w => iDocCount += w.Docs.Count); 
         myAccount.ProducerUser.Producer.Wines.ToList().ForEach(w => iRevCount += w.Reviews.Count); 
<I cut the rest out because it is pretty long> 


<div class="lightbox" id="gettingStarted" style="text-align:center;"> 
    <a href="#" class="ui-icon ui-icon-circle-close closer"></a> 
    <h3 style="margin-top:0px;">Getting Started</h3> 
    <br /> 
    To get started using the site, search useing the searchbox above or the search 
    tab on the left. 
    <br />From there you'll have access to all @Model.DBWineCount wines in our database. 
     <br /> 


</div> 
+0

你正在复制编译的文件吗? – ryudice 2012-07-24 02:14:40

+0

嗯,我只是从我的开发机器直接复制我的项目文件。编译的文件是.dll还是其他的? – user576838 2012-07-24 02:40:12

+0

在复制文件之前,您正在编译项目吗? – ryudice 2012-07-24 02:48:21

回答

1

我怀疑你是来自ASP.NET开发,编译器在第一次访问页面时自动运行。 在ASP.NET MVC中,您需要使用Visual Studio的发布命令强制编译。右键单击解决方案并选择“发布...”,然后选择您想要发布文件的文件夹,然后将该文件夹的内容上传到生产服务器。

请注意,如果您使用实体框架并在共享主机上,您可能没有权限运行该应用程序并让EF自动为您创建数据库。在这种情况下,您将需要生成SQL脚本并在数据库上手动执行这些脚本。

请注意,修改web.config只会重新启动应用程序,但不会执行任何编译。在ASP.NET MVC中,您将需要显式构建一个项目以在测试时进行编译。

+0

让我确认你的怀疑!太好了,我会按照你的指示 - 谢谢你! – user576838 2012-07-24 11:53:01