Общий поиск MVC и проблема проверки модели - PullRequest
1 голос
/ 06 июня 2011

Я объясню общий сценарий.Чтобы объяснить мою проблему, я бы попросил немного терпения, пока не объясню, как я реализовал свою страницу поиска.У меня есть таблица [Users] и таблица [Address], на основе которых я получил VIEW в SQL - [vw_User_Addr] .Я использую L2S, чтобы получить строго типизированный класс vw_User_Addr.

Теперь у меня есть страница поиска, поэтому, очевидно, я получу ее из этого класса, например:

<%@ Page Title="User Search" ... Inherits="System.Web.Mvc.ViewPage<MyDAL.vw_User_Addr>" %>

Действие «Мой список» возвращает список, который я использую в представлении для формирования таблицы Grid.Все хорошо, пока здесь.Теперь я хочу реализовать поиск на этой странице.Это то, что я нашел -

  • В контроллере во время действия списка я создаю ViewData ["Usr"] = new vw_User_Addr ();
  • В моем представлении я делаю:

    <% MyDAL.vw_User_Addr usr = ((MyDAL.vw_User_Addr) (ViewData ["Usr"]));%>

  • Затем я использую этот объект "usr", чтобы связать свой элемент управления поиском, например:

    <% = Html.TextBox ("FirstName", usr.FirstName)%>

  • Наконец, в моем действии обработчика HttpPost я возражаю vw_User_Addr вроде:

    [HttpPost] public ActionResult List (vw_User_Addr searchObj) {...}

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


Так что, надеюсь, я хорошо объяснил.Вот как я делаю свой поиск в MVC2.Вот мои проблемы / вопросы :

  1. Когда я нажимаю кнопку поиска изображения, я получаю обратную передачу, но она запускает ModelValidation, который выдает ошибку.Не со всеми, но по крайней мере с теми, которые являются int (то есть, как управление поиском выпадающего списка ролей) - как с этим справиться?

  2. После долгих исследований я решил, что должен либосделать ModelState.Clear ();или более сложный способ справиться с этим.Есть ли лучший вариант?

  3. Есть ли лучший способ добиться реализации поиска, описанной выше?Использую ли я стандартный \ лучший способ поиска в MVC?

  4. На уровне ядра могу ли я заставить L2S понять, что это SQL-View, поэтому он доступен только для чтения и все поляможет быть NULL - так что Mr.DefaultModelValidator не выполняет такие нелогичные проверки?

  5. Если 4. является жизнеспособным, могу ли я установить свойства всех полейв виде L2S, который будет доступен только для чтения, чтобы попробовать?

Спасибо за ваше драгоценное время и обзор.Просьба направлять меня, если я не на трассе.Я считаю, что это самый простой поисковый сценарий, и поэтому он должен быть легким.Просто нужно найти недостающие ссылки.

1 Ответ

0 голосов
/ 30 июня 2011

Я реализовал ActionFilterAttribute [SkipModelValidation], который исключает / исключает нежелательную проверку модели для страниц поиска.

Ссылка: Как отключить проверку в действии HttpPost в ASP.NET MVC 3?

public class SkipModelValidationAttribute : ActionFilterAttribute
    {
        public override void OnActionExecuting(ActionExecutingContext filterContext)
        {
            //Get ModelState
            ModelStateDictionary dict = ((Controller)filterContext.Controller).ModelState;

            if (dict != null && !dict.IsValid)
                dict.Clear();

            base.OnActionExecuting(filterContext);
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...