我想知道开发ASP.NET MVC应用程序的最佳实践,可选择在Linux上部署.如果您正在创建这些类型的MVC应用程序,
我不是一个巨魔,我的目标不是开始一场火焰战; 我不是不尊重Zend框架的作者:它有很多很好的工作.但是......我有一份工作要完成,而且我很难协调ZF的受欢迎程度与使用它构建应用程序的现实.我真的想知道其他人为什么使用Zend Framework.
我对PHP世界还很陌生,但我已经用很多语言做了很多编程.在阅读了许多教程并在其中构建了几个应用程序后,一些核心Zend Framework工具对我来说就像是alpha代码.对我来说,下面的根本性缺陷,等等,似乎过于庞大考虑部署它的应用程序-但一遍又一遍的ZF建议为一体的,如果不是在领先的框架.
首先让我说我发现ZF的大部分是可行的.路由工作非常适合,布局工具是可维护的(虽然与模板系统(如JSP/ASP)非常不同),缓存设施等也是如此.社区中似乎有一种趋势,即填充大量建模(例如验证)和查看逻辑(例如$ this-> headScript() - 为什么我的控制器必须关心我的视图需要哪个js文件?)到控制器中但可能是使用问题而不一定是框架的错误.
现在,我在短时间内遇到了一些非常严重(IMO)的弱点.如果我继续用它构建,我会想象未来我会发现的其他领域.
1.表单布局
许多人似乎对缺乏对表单布局的控制感到不满.你怎么能有一个流行的框架,构建一个简单的表单需要这么多的讨论?
问题1和问题2.
2.认证/授权
似乎没有人真正理解如何简单地执行例行认证/授权.人们[包括你的人]真正努力实现简单的访问控制.此外,该方法似乎依赖于持久性的序列化,而不是传统的用户和权限的数据库存储.
一个令人困惑的例子,一个建议,增加设施,教程-第一部分,
和第二部分.这是太多的工作家伙!
我认为的弱点是不真实的还是某种程度上不是问题?为什么或者为什么不?你为什么选择Zend Framework(或不)?您是否发现其他区域如此痛苦以至于您想要将ZF转换为其他方法?谢谢你的意见.
我有一个自定义成员资格/角色提供程序,我在我的MVC控制器中使用,我也希望ASP.NET MVC可以访问,所以我可以使用AuthorizationFilters等.由于很多人已经实现了自定义提供程序,我想很多人都做过这个,但我没有想出来或发现专门解决这个问题的帖子.这篇文章有点像我的问题的另一面.在我的情况下,我的自定义提供程序与我的控制器配合良好,我也希望MVC也能使用它.
我的提供程序使用IoC /依赖注入设计实现.提供程序公开了基线成员资格/角色API之外的其他功能.在我的控制器中,我使用Castle Windsor创建实例.代码看起来类似于:
public class HomeController : Controller {
IMembershipService _membershipService;
public HomeController(IMembershipService membershipService) {
_membershipService= membershipService;
}
}
<castle>
<components>
<component id="MembershipService"
service="IMembershipService, MyApp"
type="MembershipService, MyApp" lifestyle="PerWebRequest">
<parameters>
<connectionString>#{defaultConnectionString}</connectionString>
</parameters>
</component>
</components>
</castle>
public class WindsorControllerFactory : DefaultControllerFactory {
private WindsorContainer _container;
public WindsorControllerFactory() {
_container = new WindsorContainer(new XmlInterpreter(new ConfigResource("castle")));
List<Type> controllerTypes = new List<Type>();
foreach (Type t in Assembly.GetExecutingAssembly().GetTypes()) {
if (typeof(IController).IsAssignableFrom(t))
controllerTypes.Add(t);
}
foreach (Type t in controllerTypes) {
// LifestyleType.Transient = …Run Code Online (Sandbox Code Playgroud) asp.net-mvc dependency-injection castle-windsor asp.net-membership
看起来有(至少)两个选项可以让nant使用csproj文件:使用NAntContrib的任务或直接使用msbuild.exe(例如,codecampserver).我是否正确阅读,如果是这样,使用msbuild.exe优于NAntContrib任务有什么好处?
我在我的ASP.NET MVC站点中启动并运行Elmah,并且我希望将其界面与站点的管理页面集成.默认情况下,您使用url~/elmah.axd调用接口,该接口在MVC系统外部运行.安装要求你告诉MVC忽略路由,所以没有控制器或任何知道elmah的东西.安装建议特定忽略,即使默认情况下已被忽略:
public class MvcApplication : System.Web.HttpApplication {
public static void RegisterRoutes(RouteCollection routes) {
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.IgnoreRoute("elmah.axd");
...
}
Run Code Online (Sandbox Code Playgroud)
我想尝试将elmah.axd集成为网站的一个组件.我想有一个Elmah控制器,其视图使用Futures助手Html.RenderRoute,但我不确定要传递的参数:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>Elmah</h2>
<% Html.RenderRoute(???); %>
</asp:Content>
Run Code Online (Sandbox Code Playgroud)
这是否有意义 - 有没有办法将网址传递给Html.RenderRoute?有没有更好的方法不使用Html.RenderRoute?
我试图在HTML文档上使用XSLT 2.0(Saxon-PE 9.6)来创建围绕指定的非拉丁语Unicode块(允许的空格)的所有连续字符行的标记.我需要将此过程应用于文档中的每个text()节点.我在使用<xsl:analyze-string>和使用两种方法方面取得了一些进展,fn:replace()但我无法达成令人满意的完整解决方案.
例如,这里有一些包含印地语的文字:
输入: <p>??? ?? ?? means ‘cup of tea’ in ??????.</p>
期望的输出: <p><span xml:lang="hi-Deva">??? ?? ??</span> means ‘cup of tea’ in <span xml:lang="hi-Deva">??????</span>.</p>
如何在XSLT 2.0中实现此过程?
这是我的尝试<xsl:analyze-string>:
(注意:印地语使用梵文代码块U + 0900到U + 097F.)
<xsl:template match="text()">
<xsl:variable name="textValue" select="."/>
<xsl:analyze-string select="$textValue" regex="(\s*.*?)([ऀ-ॿ]+)((\s+[ऀ-ॿ]+)*)(\s*.*)">
<xsl:matching-substring>
<xsl:value-of select="regex-group(1)"/>
<span xml:lang="hi-Deva"><xsl:value-of select="regex-group(2)"/><xsl:value-of select="regex-group(3)"/></span>
<xsl:value-of select="regex-group(5)"/>
</xsl:matching-substring>
<xsl:non-matching-substring>
<xsl:value-of select="$textValue"/>
</xsl:non-matching-substring>
</xsl:analyze-string>
</xsl:template>
Run Code Online (Sandbox Code Playgroud)
在测试输入上,这会产生:
<p><span xml:lang="hi-Deva">??? ?? ??</span> means ‘cup of tea’ in ??????.</p>这种方法错过了印地语文本的第二个区域(हिन्दि).我需要一种方法来查找和标记正则表达式匹配的所有匹配项.
我使用的第二种方法fn:replace():
<xsl:template …Run Code Online (Sandbox Code Playgroud)