更新服务器文件时MVC3站点不更新

时间:2012-07-24 02:11:31

标签: asp.net-mvc-3 entity-framework razor

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

  

'vf2.ViewModels.MyAccountViewModel'不包含的定义   'DBWineCount'并没有扩展方法'DBWineCount'接受第一个   可以找到类型为“vf2.ViewModels.MyAccountViewModel”的参数   (您是否缺少using指令或程序集引用?)

这在我的开发箱上工作正常,文件是一样的。我编辑了我的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>

1 个答案:

答案 0 :(得分:1)

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

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

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