Url.Action не запускает проверку на стороне клиента - PullRequest
1 голос
/ 18 декабря 2010

По какой-то причине я не могу получить Url.Action для запуска проверки на стороне клиента в MVC 2. Я настроил его так:

<div class="createpage"><a href="<%= Url.Action("Create","Account") %>"></a></div>

Где «Создать» - это действие, а «Домой» - контроллер (AccountController.cs). Если я вставлю обычную кнопку отправки, проверка работает просто отлично. У меня проверка настроена примерно так

<% using (Html.BeginForm())
    {%>
    <%= Html.ValidationSummaryJQuery(
    "Please fix the following errors.",
    new Dictionary<string, object> { { "id", "valSumContainer" /* This is important. You can change the "id" attribute value, but don't remove it */ } }) %>
    <% ViewContext.FormContext.ValidationSummaryId = "valSumContainer"; { %>
//Form here
<%}%>

Проверка настроена с здесь

RegistrationModel.cs, от которого я получаю сообщения о проверке, выглядит так

[PropertiesMustMatch("Password", "ConfirmPassword", ErrorMessage = "The password and confirmation password do not match.")]
public class RegistrationModel
{
    [Required(ErrorMessage = "Username is required")]
    [StringLength(25, ErrorMessage = "Username cannot be longer than 25 characters")]
    public string Username { get; set; }

    public string Password { get; set; }

    public string ConfirmPassword { get; set; }
    public AccountType AccountType { get; set; }

    [Required(ErrorMessage = "Studio Name is required.")]
    public string StudioName { get; set; }

    [Required(ErrorMessage = "Phone number is required")]
    [PhoneNumber(ErrorMessage="Not a valid phone number")]
    public string PhoneNumber { get; set; }

    [Required(ErrorMessage = "Email address is required")]
    [Email(ErrorMessage = "Not a valid email address")]
    public string EmailAddress { get; set; }

    [Required(ErrorMessage = "City is required")]
    public string City { get; set; }

    [UIHint("StatesDropDown")]
    [Required(ErrorMessage="State is required")]
    public string State { get; set; }

    [Required(ErrorMessage = "Zip code is required")]
    [StringLength(10, ErrorMessage = "Zip code canot be longer than 10 digits")]
    [ZipCode(ErrorMessage="Invalid zip code")]
    public string ZipCode { get; set; }

    [Required(ErrorMessage = "About text is required")]
    public string AboutText { get; set; }

    [Required(ErrorMessage = "Starting price is required")]
    [Currency(ErrorMessage="Not a valid currency value")]
    public double PriceStartsAt { get; set; }

    [UIHint("SkillsListView")]
    [Required(ErrorMessage="At least 1 skill must be selected")]
    public IList<Skill> Skills { get; set; }

    [UIHint("EquipmentListView")]
    [Required(ErrorMessage = "At least 1 equipment must be selected")]
    public IList<Skill> Equipment { get; set; }

    [UIHint("OccassionsListView")]
    [Required(ErrorMessage = "At least 1 occassion must be selected")]
    public IList<Skill> Occassions { get; set; }
}

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

РЕДАКТИРОВАТЬ : поставить HomeController вместо AccountController , фиксированный

Ответы [ 2 ]

3 голосов
/ 18 декабря 2010

@ PsychoCoder

В Интернете проверка запускается только при отправке формы.

Если вы хотите проверить с помощью тега привязки, вам потребуется настроить некоторый код JavaScript,Этот javascript может быть библиотекой проверки jQuery, в качестве альтернативы вы можете вызвать отправку, используя событие onclick на привязке.

<a href="javascript:void(0);" onclick="this.form[0].submit()">Create</a>

'this.form [0]' можно заменитьидентификатор формы создания.

0 голосов
/ 19 декабря 2010

Я думаю Я все ближе. Изменил мой BeginForm на

Html.BeginForm("Create", "Account", FormMethod.Post, new { @id = "RegisterForm" })

Сделал клик-метку DIV, которая отображала бы нужный мне спрайт

<div onclick="javascript:RegisterForm.submit(); return false" class="createpage">
&nbsp;
</div>

Итак, у меня есть возможность отправить форму, но проверка вообще не выполняется, даже если пустые (обязательные) поля формы отправляются в любом случае. Так что теперь, это становится запутанным LOL. Никогда не было так сложно отправить и проверить форму (опять же, я новичок в MVC)

...