Html.ValidationMessageFor на Mono имеет странные результаты - PullRequest
0 голосов
/ 20 августа 2010

Я новичок в ASP.NET, и я изучал, как использовать его через этого учебника . Я использую Linux, поэтому я использую Mono 2.6.7. Мне пришлось несколько раз отклониться от пути обучения, чтобы заставить работать под Mono (в том числе использовать исправленную версию MVC 2, на которую я хотел бы сослаться, но я не могу, поскольку новые пользователи могут публиковать только одну гиперссылку) , но есть одна проблема, которую я не смог исправить: проверка формы. Я настроил свои метаданные проверки так:

using System;
using System.ComponentModel;
using System.ComponentModel.DataAnnotations;
using System.Web.Mvc;

namespace MvcMusicStore.Models
{
 [MetadataType(typeof(AlbumMetaData))]
 public partial class Album
 {
  [Bind(Exclude = "AlbumID")]
  public class AlbumMetaData
  {
   [ScaffoldColumn(false)]
   public object AlbumID { get; set; }

   [DisplayName("Genre")]
   public object GenreID { get; set; }

   [DisplayName("Artist")]
   public object ArtistID { get; set; }

   [Required(ErrorMessage = "An Album Title is required")]
   [StringLength(160)]
   public object Title { get; set; }

   [DisplayName("Album Art URL")]
   [StringLength(1024)]
   public object AlbumArtUrl { get; set; }

   [Required(ErrorMessage = "Price is required")]
   [Range(0.01, 100.00, ErrorMessage = "Price must be between 0.01 and 100.00")]
   public object Price { get; set; }
  }
 }
}

И я настроил свой вид следующим образом:

<p>
    <%= Html.LabelFor(model => model.Title) %>
 <%= Html.TextBoxFor(model => model.Title) %>
    <%= Html.ValidationMessageFor(model => model.Title) %>
</p>

<p>
 <%= Html.LabelFor(model => model.Price) %>
 <%= Html.TextBoxFor(model => model.Price) %>
 <%= Html.ValidationMessageFor(model => model.Price) %>
</p>

<p>
 <%= Html.LabelFor(model => model.AlbumArtUrl) %>
 <%= Html.TextBoxFor(model => model.AlbumArtUrl) %>
 <%= Html.ValidationMessageFor(model => model.AlbumArtUrl) %>
</p>

Однако, когда я проверяю форму, сообщая ей неверные данные, я не получаю сообщения об ошибках, которые я установил. Когда я оставляю «Заголовок» пустым, я получаю: «Ошибка проверки (System.ComponentModel.DataAnnotations.RequiredAttribute): Заголовок», и я получаю похожую ошибку, когда оставляю Прайс пустым. Если я ввожу номер вне допустимого диапазона для «Price» или длинную строку для «Title» или «AlbumArtUrl», сценарий игнорирует проблему, не оставляет сообщение об ошибке и позволяет отправлять форму; однако, если я наберу очень большое число в поле «Цена», я получу «Недопустимое значение« большое число »."

Как я могу это исправить? Есть ли альтернативный метод Html.ValidationMessageFor, который я могу использовать? Это проблема с моей моделью? Это просто проблема с моно? Пожалуйста, помогите!

1 Ответ

0 голосов
/ 20 августа 2010

Похоже, что атрибуты [Required] и [Range] на самом деле не реализованы в Mono. Они просто заглушки, чтобы вы могли скомпилировать свое приложение.

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