2014-10-09 78 views
0

好吧,我有一个webforms项目,我想开始做MVC。我希望MVC页面能够使用Webforms主页面,直到我可以将更多的东西传递给MVC。我有这个与我发现,你可以找到下面列出的解决方案的工作(该项目的作品真的很好,除了服务器事件)Webform母版页MVC PartialRender服务器事件不会触发

https://github.com/MicahArmantrout/BlackMagicMVC

enter image description here

我的问题是在主该服务器端事件页面不会触发。如果您点击“加载项目”单击我!该按钮将触发服务器事件,文本将更改为“您点击了我”。

enter image description here

如果您转到“点击对于MVC”(这是一个MVC局部渲染),然后点击“点击我!”服务器事件永远不会触发。任何想法为什么,如果这可以解决?

注:这不只是一个锻炼我有一个应用程序的地方useful.If你想了解该项目的更多,这将是极其请参阅

http://trycatchfail.com/blog/post/ASPNET-MVC-3-Razor-C-and-VBNET-WebForms-A-Tale-of-Black-Magic-Voodoo.aspx

回答

1

没有MVC中服务器端事件的概念。而且MVC不会像ASP.Net WebForms那样连接客户端事件并将其转换为服务器端事件处理程序。

您有以下选择:

  • 重新创建母版页的MVC(_Layout.cshtml),然后在你的控制器处理按钮点击。根据您的设计,需要进行一些重构。您需要决定如何或谁处理这些按钮点击。你可能不想在基本控制器中处理其中的一些,但我建议再看看你在做什么,以及如何在MVC上翻译它们。
  • 做另一种方式 - 在MVC中定义您的母版页,并在您的webforms中呈现该页。

理想情况下,您的母版页不应该有任何业务功能。它应该不过是导航和风格。只要你坚持这一点,迁移到MVC不会那么痛苦。

+0

是的,但主页仍然在Webforms中,所以不应该将该部分连接起来?至于业务逻辑不应该在母版页...我同意....我已经继承了这个项目,所以它不是我的选择:) – 2014-10-09 17:29:31

+0

不在局部视图。 'runat = server'是这里的秘诀。 MVC不知道是什么意思,只有webForms明白这一点。 – Mrchief 2014-10-09 17:31:14

+0

酷我猜这是一个明显的答案,但对于来自webforms世界的家伙,我真的很感谢你的帮助! – 2014-10-09 17:32:23