Работа с удаленной проверкой asp.net MVC

1

Мне нравится пытаться использовать удаленную проверку, которую я вижу по этой ссылке: http://www.youtube.com/watch?v=Ll8VtDRj8L4

я следил за инструкцией, и это сработало, но проблема в том, что когда я пытаюсь добавить данные из ссылочной таблицы, проверка не будет работать

Модельный класс:

public partial class ms_student
{
    public int ID { get; set; }
    public string student_code{ get; set; }
    public virtual ms_person ms_person { get; set; }
}

public partial class ms_person
{
    public string name{ get; set; }
    public string email { get; set; }
    public virtual ms_student ms_student { get; set; }
}

Метаданные:

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

namespace Test.Models
{
    [MetadataType(typeof(personMD))]
    public partial class ms_person
    {
    }

    public class personMD
    {
        [Required(ErrorMessage = "Email is required")]
        [EmailAddress(ErrorMessage = "Invalid Email Address")]
        [Remote("CheckEmailExist", "Administrator", ErrorMessage = "Email Already Exist")]
        public object email { get; set; }

    }
}

контроллер:

public JsonResult CheckEmailExist(string email) // the error i think from email paramater, cause the video said to make the paramater exactly the same name...
{
    return Json(!db.ms_person.Any(m => m.email == email), JsonRequestBehavior.AllowGet);
}

Просмотры:

@model Test.Models.ms_student

@using (Html.BeginForm("CreateStudent", "Administrator", FormMethod.Post,
                        new { enctype = "multipart/form-data" }))
{
    @Html.AntiForgeryToken()
    @Html.ValidationSummary(true)

    @Html.TextBoxFor(model => model.student_code) //this one work and already tested
    @Html.ValidationMessageFor(model => model.student_code)

    @Html.TextBoxFor(model => model.ms_person.email) //if you inspect element on browser the NAME are ms_person.email and ID are ms_person_email
    @Html.ValidationMessageFor(model => model.ms_person.email)
}

Я попытался изменить параметр JsonResult Controller paramater в (строка ms_person.email), но там ошибка упомянутого имени пространства электронной почты не найдена. Также попытался использовать (строка ms_person_email), не будет работать ни

я также тестировал с помощью student_code, поле student_code работает правильно, потому что атрибут student_code находится в одной и той же модели (ms_student), а не как электронная почта (ссылка на ms_person)

Вся работа по проверке метаданных, как и требуется на обеих моделях, поэтому я предполагаю, что ошибка указана в параметре JsonResult

большое спасибо

  • 0
    Вы можете попробовать public JsonResult CheckEmailExist([Bind(Prefix="ms_person"]string email) {..
  • 0
    попробуйте, но не работает: O, ищем другое решение прямо сейчас ..
Показать ещё 3 комментария
Теги:
validation
asp.net-mvc

2 ответа

1
Лучший ответ

Измените свой метод действий, чтобы включить атрибут/свойство Bind Prefix

public JsonResult CheckEmailExist([Bind(Prefix="ms_person.email")]string email)
{
  ...
0

Просто измените его на

@Html.TextBoxFor(model => model.ms_person.email, new{@id="email", @name="email"})
  • 0
    Это не меняет название. Html хелперы перезаписывать любую попытку установить name attribute`
  • 0
    все еще не работает, просто спрашиваю, изменил ли я имя и идентификатор с помощью нового {}, означает ли это, что структура сущности не будет распознавать идентификатор и имя, и электронная почта не будет вставлена в базу данных? просто любопытно .... не пробовал ...

Ещё вопросы

Сообщество Overcoder
Наверх
Меню