MVC маршрутизация с параметрами - PullRequest
0 голосов
/ 07 сентября 2011

У меня есть приложение MVC3.Для URI типа http://app/survey/Test у меня есть следующий опрос / {имя}, который отлично работает.

Этот контроллер опроса загружает кучу вопросов
На каждый вопрос есть куча возможных ответов
Возможные ответы помещаются в DropdownListBox или какой-либо другой дружественный элемент управления списком

Сейчасесли пользователь нажал на URI, например http://app/survey/Test?city=London, я хочу как-то выяснить в моей коллекции Model.Question [i] .PossibleAnswers, что Лондон должен быть значением по умолчанию для вопроса «Город».

Если пользователь нажал на URI, например http://app/survey/Test?gender=Male&city=London&something=SomethingElse
Тогда я хочу, чтобы в тестовом опросе отображалось
И его гендерный вопрос по умолчанию установлен на Мужской
Это городской вопрос по умолчанию на Лондон
ЭтоSomethingElse

Что-то имеет значение по умолчанию?
У кого-нибудь есть идеи, как это настроить?

Это немного расплывчато, извините за это, но лучший способ описать это.

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 сентября 2011

Вам не нужно ничего делать, кроме как указать свою модель в вашем HttpGet действии, например:

[HttpGet]
public ActionResult Test(Survey survey)
{ }

Если вы укажете модель в действии GET, значения строки запроса будут переданы в модель, поскольку они потребляются QueryStringValueProvider, что делает их доступными для привязки к вашей модели без каких-либо дополнительных действий с вашей стороны. .

0 голосов
/ 07 сентября 2011

Вы можете использовать привязку модели, как показано ниже, а затем передать

SurveyModel

к вашему действию контролера в методе действия, которое вы можете использовать SurveyModel. идентификатор City SurveyModel.id2 и т. д.

  public object BindModel(ControllerContext controllerContext, ModelBindingContext bindingContext)
        {
            IValueProvider valueProvider = bindingContext.ValueProvider;

            string id = valueProvider.GetValueOrNullString("id");
            string id2 = valueProvider.GetValueOrNullString("id2");
            string id3 = valueProvider.GetValueOrNullString("id3");
            string id4 = valueProvider.GetValueOrNullString("id4");

            return new SurveyModel {Id = id, Id2 = id2, Id3 = id3, Id4 = id4};
        }

Подробнее см. Ссылки Google

...