代码之家  ›  专栏  ›  技术社区  ›  pbz

Visual Studio中缺少ASP.NET MVC“转换为Web应用程序”选项

  •  1
  • pbz  · 技术社区  · 15 年前

    我正在使用Visual Studio 2008 SP1和ASP.NET MVC v1。当右键单击一个视图时,我没有得到“转换为Web应用程序”选项,我需要在.cs类后面生成代码。我看到这个选项是针对实际的项目和文件夹,而不是针对视图(ASPX文件)。我已经检查过项目类型的guid是否有“正确的”(?)值:

    603c0e0b-db56-11dc-be95-000d561079b0 349c5851-65df-11da-9384-00065b846f21 fae04ec0-301f-11d3-bf4b-00c04f79efbc

    关于我能找什么还有什么建议吗?

    谢谢。

    (我知道在MVC中使用代码隐藏类的设计含义)

    P.S.要手动操作,您所要做的就是:

    1. 添加与视图和.cs(或.vb)扩展名同名的文件,例如index.aspx.cs。请确保将类修改为继承自System.Web.MVC.ViewPage或其他继承自System.Web.MVC.ViewPage的类。
    2. 编辑aspx文件并添加到@page directive code behind=“index.aspx.cs”并将inherits更改为“mynamespace.views.home.index”(显然,您需要有正确的代码和命名空间)。
    3. 右键单击ASPX文件并选择“转换为Web应用程序”。这将创建设计文件并修改.cs类并将其标记为“部分”。
    4 回复  |  直到 15 年前
        1
  •  5
  •   Franci Penov    15 年前

    “转换为Web应用程序”是一个项目/文件级命令。你不能在单人间用它 ASPX 文件。

    此外,没有其他的自动化方法(我知道的是:-)来将代码隐藏文件添加到ASPX文件中。您必须手动执行,方法是自己添加相关文件,然后将它们添加到.csproj。

        2
  •  5
  •   George Stocker NotMe    15 年前

    不需要在ASP.NET MVC中使用“代码隐藏”。

    如果使用“代码隐藏”,则不会遵循ASP.NET MVC的约定。

    问题是,您为什么要隐藏代码?回答这个问题有助于我们确定你真正需要什么。

    如果您真的想这样做,可以将WebForms和ASP.NET MVC混合在一起。在这方面有很多资源,但是 here's just one .

        3
  •  4
  •   joejoeson    15 年前

    MVC开发模型不需要代码隐藏。

    在这上面读一篇好的博客文章 Here

        4
  •  0
  •   Victor    15 年前

    如果您试图重用一些控件,那么一个好的方法可能是在助手方法中创建和呈现它们,而不是从视图中调用该方法。

    我的想法是这样的:

    public static string HelperMethod(param_list)
    {
       var control = new ControlType();
       //set up control properties according to param_list
    
       //get the html as string - one way to do it would be like this
       StringWriter stringWriter = new StringWriter();
       HtmlTextWriter htmlWriter= new HtmlTextWriter(stringWriter);
       control.RenderControl(htmlWriter);
       string result= stringWriter.ToString();
    }
    

    然后像这样从视图中调用它:

    <%= HelperClass.HelperMethod(params) %>
    

    我不确定这种方法是否有效,我不知道它是否有意义。与其说是一个正确的解决方案,不如说是我的黑客行为。我以前没做过这样的事,这只是个主意,试着看看是否对你有帮助。您还应该记住,ASP.NET控件通常使用ViewState进行状态管理,而且ASP.NET MVC中没有这种情况。