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

#asp.net-mvc

#asp.net-mvc

Вопрос:

Я новичок в mvc, mvp или как вы хотите их называть. Прямо сейчас я пытаюсь реализовать ReservationController , когда пользователь сначала выбирает дату, а затем получает список подходящих предложений по времени. Как вы должны знать, предложения зависят от выбранной даты. Вот тут-то и начинается моя проблема / вопрос. Должен ли я:

1) Поместить событие в интерфейс представления типа DateChanged , а затем подписаться на него в контроллере?

2) Вызовите UpdateSuggestions контроллер с моей страницы asp, когда изменится выбранная дата. (тогда я должен сделать метод контроллера общедоступным)

Или

3) Обновите предложения в конструкторе контроллера.

С уважением и спасибо за помощь

эрик

Комментарии:

1. Пожалуйста, предоставьте пример кода и какую версию MVC вы используете?

2. Выполняется ли выбор даты по ссылке?

3. Добро пожаловать на сайт. Исходя из "mvc, mvp or whatever you want to call them" , хорошим первым шагом было бы приложить усилия для выяснения, какой фреймворк вы используете, и различий между ним и другими, с которыми вы, возможно, путаетесь.

4. Контроллер должен наблюдать за моделью, а не за представлением … en.wikipedia.org/wiki /…

Ответ №1:

Вам нужно выйти из системы управления событиями, которая управляет ASP.NET веб-формы. Хотя технически это возможно сделать таким образом, я бы предложил пойти другим путем.

Вам нужно вернуть пользователю представление, которое позволяет ему вводить дату в форму. Затем они отправляют форму обратно на сервер, и другой метод действия обрабатывает это сообщение. Этот метод получает список предложений по времени и возвращает представление с этими временами в качестве модели.

Посмотрите здесь несколько достойных видеороликов по основам MVC: http://www.asp.net/mvc

Комментарии:

1. Точно, MVC управляется запросом-ответом, поскольку HTTP не имеет состояния. Лично я считаю, что WebForms напортачили с веб-разработкой, но это издержки, позволившие опытным разработчикам VB6 приступить к работе в Интернете.

2. Очень верно — я думаю, что MVC сделал и делает огромные объемы для увеличения базы навыков ASP.NET веб-разработчики. Даже если WebForms сохранит свою силу, будет больше людей, способных правильно понимать, что он делает. Говоря это — все разработчики, которых я знаю, которые используют MVC сейчас, ненавидят работать с WebForms.

Ответ №2:

Вот несколько замечательных примеров ASP.Net MVC, которые являются отличным чтением для тех, кто только начинает.

http://www.asp.net/mvc

http://www.asp.net/mvc/tutorials/getting-started-with-mvc3-part1-cs

Эти два примера включают книги, которые шаг за шагом помогут вам создать проект MVC:

http://nerddinner.codeplex.com/

http://www.asp.net/mvc/samples/mvc-music-store

Возможно, это не дает прямого ответа на ваш вопрос, но ознакомление с этими примерами должно помочь понять, как работает MVC и, в частности, как его использовать в ASP.Net . 🙂

Вот также небольшая информация о шаблоне MVC.

http://en.wikipedia.org/wiki/Model–view–controller

http://msdn.microsoft.com/en-us/library/ff649643.aspx

Ответ №3:

Вы должны поместить ссылку или форму в свое представление, которая указывает на URL, который передает дату действию в контроллере.
Это действие должно принимать дату в качестве параметра, извлекать данные для этой даты и передавать их в отдельное представление, которое отображает данные.


Вам следует изучить основы HTTP и веб-страниц, а также базовый дизайн ASP.Net MVC.
Написание кода во фреймворке или системе, который вы не понимаете, — это путь к разочарованию и катастрофе.

Ответ №4:

Извините, но ваши знания в asp.net mvc очень, очень плохой. Лучше получить некоторые знания получше, иначе вы не сможете заставить это работать. Но в любом случае

1) В представлениях в mvc не существует событий 2) Представление не вызывает contstructor на контроллере 3) смотрите первые два

Ответ №5:

Я думаю, вы неправильно понимаете, как работает MVC.

Если вам неясно, как работает MVC, стоило бы проверить что-нибудь вроде nerd dinner и блог Скотта Гу.

Для обработки этого вы могли бы привязать свои даты к действию, подобному приведенному ниже:

 [HttpGet]
public ActionResult YourAction(DateTime date)
        {
            // Add action logic here
            Manager suggestions = new Manager();
            var suggestions =suggestions.UpdateSuggestions(date)

            // create view model
            MyModel model= new MyModel(suggestions);
            return View(model);
        }