Настройка Spring.NET Validation Framework с использованием ASP.NET MVC - PullRequest
0 голосов
/ 29 мая 2009

Я начинаю новый проект для работы и решил, что хочу попробовать MVC. Это небольшой внутренний сайт для поездок на работу.

Я хочу использовать Spring.NET для проверки. Ранее я использовал Spring.NET в веб-формах, но без кода, как в традиционном ASP.NET, как мне использовать платформу валидации страниц, предоставляемую Spring.NET?

Редактировать 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>

Мой проверочный файл очень стандартный и в основном является копией и вставкой из другого проекта, поэтому я не включил его.

Теперь у меня проблема, как мне это использовать? Как мне получить контекст приложения? Пользователи моих веб-форм проектируют Spring.Web.UI.Page, но я волнуюсь, потому что страницы по умолчанию в MVC берутся из System.Web.Mvc.ViewPage, так что это не сработает.

Или я просто пока не могу использовать среду Spring.NET для MVC?

Спасибо!

Спасибо за любую помощь.

Ответы [ 2 ]

0 голосов
/ 12 ноября 2009

Насколько мне известно, Spring Validation не поддерживается до последней версии ASP.NET MVC (1.0) и Spring.NET framework (1.3).

Что касается интеграции Spring.NET с MVC, вы можете использовать проект MvcContrib и использовать ту же базу кода, что и Колин Десмонд (но вам не нужно делать грязную работу самостоятельно).

0 голосов
/ 08 июня 2009

Вы определенно можете использовать Spring с ASP.Net MVC. Вам нужно зарегистрировать, что вы используете его в классе 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);
    }
}

Просто убедитесь, что путь к вашему весеннему конфигурационному файлу правильный! Это было адаптировано с эта ссылка .

В более широком смысле, этот подход не позволяет вам Spring классов страниц, и, будучи архитектурой MVC, где представления являются довольно тупыми классами, на самом деле не поддерживает расширенную проверку в самом представлении способом, который вы предлагаете. Посмотрите на любой из них, включая проверку в Model (post-back) в JQuery.

...