Я новичок в 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, который я могу использовать? Это проблема с моей моделью? Это просто проблема с моно? Пожалуйста, помогите!