Как Вы выключаете или заменяете сообщение об ошибке ModelState по умолчанию в Asp.net MVC?

Вы неправильно интерпретируете действия функции safely. Это было действительно успешно. Если вы проверили значение test, вы должны были увидеть:

> test
[1] "Error in get(\"meta\", env = my_env) : object 'meta' not found\n"
attr(,"class")
[1] "try-error"
attr(,"condition")
<simpleError in get("meta", env = my_env): object 'meta' not found

Чтобы подавить отображение сообщений об ошибках на консоли, вы можете отключить отчеты с помощью options(show.error.messages = FALSE) или перенаправить пункт назначения stderr().

9
задан Fabian Steeg 14 February 2009 в 23:05
поделиться

4 ответа

Я должен быть категорически не согласным со всеми ответами, которые Вы получили до сих пор. Ни один из них на самом деле не отвечает на вопрос, который Вы задали, который является, как локализовать сообщения об ошибках MVC. Вы могли потратить большое усилие, работающее вокруг этого единственного экземпляра проблемы, и все еще иметь ту же проблему с 50 другими случаями сообщений об ошибках MVC, если Вы на самом деле не локализовываете свое приложение. Они определяются в MvcResources.resx, который найден в папке Resources исходного кода MVC (или просто просмотрите блок с Отражателем). В частности, Вы ищете Common_ValueNotValidForProperty ресурс. Вы локализовали бы эти сообщения путем обеспечения локализованной сборки-сателлита, таким же образом что Вы локализовываете любое приложение.NET. Специфические особенности интернационализации/локализации в приложениях.NET за пределами объема этого ответа, но существует много книг по предмету. Выполнение этого в MVC не отличается, чем выполнение его в любом другом приложении, за исключением того, что в большинстве случаев локализации платформы уже доступны. MVC все еще в бета-версии, таким образом, это, насколько я знаю, только для английского языка, в данный момент. По-видимому, это изменится после выпуска.

8
ответ дан 4 December 2019 в 21:51
поделиться

Я мог назвать ModelState. Ясный (); в начале действия. Но, я не уверен, что мне нравится иметь необходимость сделать это в каждом действии.

0
ответ дан 4 December 2019 в 21:51
поделиться

Вы могли сделать параметр DateTime nullable. Затем, если ничто не будет предоставлено, то ошибка не будет добавлена к ModelState.

public ActionResult Method(Datetime? date)
{} 

вместо

public ActionResult Method(Datetime date)
{}
0
ответ дан 4 December 2019 в 21:51
поделиться

Я удалил бы то конкретное текстовое поле из белого списка, который Вы передаете модели TryUpdateModel/Update и проверяете ее "вручную", вместо того, чтобы иметь его проверены платформой. С другой стороны, Вы могли попытаться выполнить итерации через Ошибочный набор ModelState, найти тот, который Вы хотите удалить, и удалить его - говорит использование RemoveItem, после того как Вы выясняете, от какого Вы хотите избавиться.

Править: При использовании ModelBinder по умолчанию Вы могли бы реализовать свое собственное. Я предполагал, что, так как Вы генерировали свои собственные образцовые ошибки, Вы использовали TryUpdateModel/UpdateModel.

1
ответ дан 4 December 2019 в 21:51
поделиться
Другие вопросы по тегам:

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