Что определяет традиционное понятие “страницы” в MVC?

Обновление:

Для сообщения об ошибке в предыдущем коде (а не обновления):

{Microsoft.WindowsAzure.Storage.StorageException: 
ErrorCode "InvalidInput"
Element 0 in the batch returned an unexpected response code.
StatusMessage:0:Bad Request - Error in query syntax

Причина в том, что partkey и rowkey в Хранилище таблиц не принимает такие символы, как "/". И когда вы используете DateTime.Now.ToString (), которая содержит символы "/", в качестве суффикса partkey и rowkey, тогда возникнет ошибка. Пожалуйста, отформатируйте дату и время и удалите «/», вы можете использовать DateTime.Now.ToString("o") в своем коде (или другом правильном формате).

Для обновленного кода:

Ошибка в том, что TableOperation class не имеет конструктора (без параметров или без параметров). Вы можете перейти к классу TableOperation и взглянуть на его использование.

enter image description here

В вашем случае вы должны использовать его статический Insert method как var op = TableOperation.Insert(entry) вместо var op = new TableOperation(entry,TableOperationType.Insert).

И еще одна вещь, которую вам нужно знать: partkey и rowkey в хранилище таблиц не принимают такие символы, как «/», поэтому, когда вы используете datetime.now для суффикса partkey и rowkey, вы должны использовать var s = DateTime.Now.ToString("o"). Или это приведет к ошибке.

Пример кода работает для меня нормально:

        public void CreateTableIfMissing()
        {
           var info = new StorageInfo(); // initialized with tablename and connectionstring
           var storageAccount = CloudStorageAccount.Parse(info.ConnectionString);
           var tableClient = storageAccount.CreateCloudTableClient();
           var table = tableClient.GetTableReference(info.TableName);

            try
            {
                table.CreateIfNotExists();

                var s = DateTime.Now.ToString("o");
                var entry = new TableEntity("partkey" + s, "rowkey" + s);
                var op = TableOperation.Insert(entry);
                table.Execute(op);               

            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                throw;
            }
        }

Дополнительные примеры кода о хранении таблиц можно найти в этой статье .

6
задан imlouisrussell 31 December 2011 в 11:36
поделиться

3 ответа

С точки зрения домена, я определенно говорю, что имеет смысл иметь 1 контроллер на контекст домена. Не обязательно по одному на страницу, хотя в зависимости от контекста это может иметь место. Под контекстом я подразумеваю «действия, которые тесно связаны».

Например, контроллер учетной записи должен обрабатывать вход в систему, регистрацию, выход из системы, изменение пароля, действия. Все они живут в контексте «учетной записи»

Например, Stackoverflow. У меня будет контроллер «Вопросы», который будет выполнять такие действия, как DisplayQuestion, AskQuestion, Удалить вопрос, MostRecent Вопросы и т. Д. Все они представляют собой разные «Представления / страницы», которые управляются одним контроллером.

7
ответ дан 10 December 2019 в 02:53
поделиться

В MVC «страница» - это то, что вы получаете, когда вы складываете три вместе. Модель обрабатывает слой данных, представление обрабатывает фактический HTML, который видит пользователь, и контроллер решает, как они взаимодействуют друг с другом, чтобы показать желаемые данные. Мой выбор в отношении использования отдельного контроллера или другого метода для существующего контроллера зависит от того, насколько близка операция к другому контроллеру (ам), которые у меня есть. Скажем, я хотел иметь контроллер UserAdmin, теперь он, скорее всего, будет обрабатывать добавление пользователя, удаление пользователя, изменение паролей и т. Д. Если бы я добавлял функциональность, которая каким-то образом касалась изменения учетной записи пользователя, я бы, скорее всего, поставил бы его там. Если бы я разделил их на их собственные контроллеры, я бы, естественно, добавил еще один. Контроллеры позволяют вам размещать похожие задачи вместе, чтобы они могли использовать то, что уже есть в классе, вместо того, чтобы заново создавать то, что уже было сделано. Многое из того, как программист считает, что это должно быть сделано. То, что имеет смысл для вас, может не иметь смысла для меня, это выбор разработчика (или дизайнера).

1
ответ дан 10 December 2019 в 02:53
поделиться

Вы правы в том, что каждый публичный метод в контроллере становится «страницей». При этом, это не обязательно веб-страница, действие может быть публикацией данных и затем перенаправлять на другое действие / страницу, так что страница не обязательно означает «веб-страница».

MVC использует множество соглашений, чтобы заставить вещи работать. Например, каждый контроллер должен заканчиваться на «Контроллер». Таким образом, набор пользовательских страниц (создание, редактирование, удаление и т. Д.) Будет в UserController. В папке Views каждый открытый метод или действие в классе контроллера становится веб-страницей в папке, которая соответствует префиксу контроллера (в данном случае, папке User). Таким образом, действие под названием «Удалить» в классе контроллера будет указывать на страницу Delete.aspx в папке «Пользователь».

1
ответ дан 10 December 2019 в 02:53
поделиться
Другие вопросы по тегам:

Похожие вопросы: