2009-05-29 15 views
0

私は仕事のための新しいプロジェクトを開始しています。私はMVCをショットにしたいと決めました。通勤のチャレンジのための小さな内部サイトです。ASP.NET MVCを使用したSpring.NET検証フレームワークの設定

私はSpring.NET for Validationを使用したいと思います。以前はWeb FormsでSpring.NETを使用していましたが、従来のASP.NETのようにコードがなくても、Spring.NETが提供するPage Validationフレームワークはどのように使用しますか?ここでは、この自分自身をしようとする試みにおいて

私が持っているものです::

編集1

のWeb.Config

<?xml version="1.0"?> 
<configuration> 
    <configSections> 
     <sectionGroup name="spring"> 
      <section name="context" type="Spring.Context.Support.WebContextHandler, Spring.Web" /> 
      <section name="objects" type="Spring.Context.Support.DefaultSectionHandler, Spring.Core"/> 
      <section name="parsers" type="Spring.Context.Support.NamespaceParsersSectionHandler, Spring.Core"/> 
     </sectionGroup> 
    </configSections> 
    <appSettings> 
     <add key="RouteValidator" value="RouteValidator"/> 
     <add key="UserValidator" value="UserValidator"/>   
    </appSettings> 
    <spring> 
     <context> 
      <resource uri="config://spring/objects"/> 
      <resource uri="~/Config/Spring.Web.cfg.xml" /> 
      <resource uri="~/Config/Spring.Validation.cfg.xml" /> 
     </context> 
     <parsers> 
      <parser type="Spring.Validation.Config.ValidationNamespaceParser, Spring.Core" /> 
     </parsers> 
    </spring> 
    <system.web> 
      <httpModules> 
       <add name="Spring" type="Spring.Context.Support.WebSupportModule, Spring.Web" /> 
      </httpModules> 
    </system.web> 
</configuration> 

Spring.Web.Cfg.xml

<?xml version="1.0" encoding="utf-8" ?> 
<objects xmlns="http://www.springframework.net" 
       xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
       xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd"> 

    <description> 
     Foo MVC Controller declarations. 
    </description> 

    <object id="HomeController" type="Foo.MVC.Web.Controllers.HomeController, Foo.MVC.Web"></object> 
    <object id="AccountController" type="Foo.MVC.Web.Controllers.RouteController, Foo.MVC.Web"></object> 
    <object id="RouteController" type="Foo.MVC.Web.Controllers.RouteController, Foo.MVC.Web"></object> 

    <object id="Spring.Web.UI.Controls.ValidationError" abstract="true"> 
     <property name="Renderer"> 
      <object type="Spring.Web.UI.Validation.IconValidationErrorsRenderer, Spring.Web"> 
       <property name="IconSrc" value="validation-error.gif"/> 
      </object> 
     </property> 
    </object> 

    <object id="Spring.Web.UI.Controls.ValidationSummary" abstract="true"> 
     <property name="Renderer"> 
      <object type="Spring.Web.UI.Validation.DivValidationErrorsRenderer, Spring.Web"> 
       <property name="CssClass" value="validationError"/> 
      </object> 
     </property> 
    </object> 

    <object id="standardPage" abstract="true"> 
     <property name="MasterPageFile" value="~/Views/Shared/Site.master"/> 
     <property name="CssRoot" value="~/Content/"/> 
     <property name="ImagesRoot" value="~/Content"/> 
    </object> 
</objects> 

私の検証ファイルは非常に標準的で、基本的には別のプロジェクトのコピー&ペーストです。それ。

今問題はどのように使用するのですか?アプリケーションコンテキストを取得するにはどうすればよいですか?私のWebフォームのプロジェクトユーザーはSpring.Web.UI.Pageですが、MVCのデフォルトページはSystem.Web.Mvc.ViewPageから派生しているので、私は心配しています。

私はSpring.NETのフレームワークをMVC用にまだ使用できませんか?

ありがとうございます!

ありがとうございます。

答えて

0

あなたは間違いなくASP.Net MVCでSpringを使用できます。 Global.ascxクラスで使用していることを登録する必要があります。次に、フレームワークは設定ファイルで定義したものに基づいてコントローラを作成します。

public class MvcApplication : System.Web.HttpApplication 
{ 

    ...Routes stuff... 

    protected void Application_Start() 
    { 
     ControllerBuilder.Current.SetControllerFactory(typeof(ControllerFactory)); 

     RegisterRoutes(RouteTable.Routes);  
    } 
} 
public class ControllerFactory : IControllerFactory 
{ 
    public IController CreateController(RequestContext requestContext, string controllerName) 
    { 
     return IoC.Resolve<IController>(controllerName); 
    } 

    public void ReleaseController(IController controller) 
    { 
     //This is a sample implementation 
     //If pooling is used write code to return the object to pool 
     if (controller is IDisposable) 
     { 
      (controller as IDisposable).Dispose(); 

     } 
     controller = null; 
    } 
} 
public static class IoC 
{ 
    static readonly IObjectFactory Factory 
     = new XmlObjectFactory(new FileSystemResource 
      (HttpContext.Current.Server.MapPath("~/Config/Spring.config"))); 

    public static T Resolve<T>(string name) 
    { 
     return (T)Factory.GetObject(name); 
    } 
} 

春の設定ファイルへのパスが正しいことを確認してください。これはthis linkから適応されました。

このアプローチでは、ページクラスをSpringにすることはできません。また、MVCアーキテクチャでは、ビューがかなりダムのクラスであり、ビュー自体の豊富な検証を実際にはサポートしていません。 JQueryのモデル(ポストバック)の検証を含むかどうかを調べてください。

0

私の知る限り、Spring ValidationはASP.NET MVC(1.0)およびSpring.NETフレームワーク(1.3)の最新リリースまでサポートされていません。

MVCでSpring.NETを組み込む限り、MvcContribプロジェクトを使用して、Colin Desmondによって投稿されたのと同じコードベースになることができます(ただし、自分で汚い作業をする必要はありません)。

関連する問題