MVC3 Удаленный атрибут, как реализовать? - PullRequest
0 голосов
/ 06 июля 2011

У меня есть Решение в рамках этого решения, есть несколько проектов, один из которых называется DomainModel, в котором я пишу свои модели и другие вещи, в основном инфраструктуру.

Теперь у меня есть еще один проект под названием WebUI, в котором я делаю своиПользовательский интерфейс (Представления, Контроллеры и т.д ...)

Я хочу использовать атрибут Remote в проекте DomainModel, который должен быть реализован в определенном представлении WebUI.

Когда я использую его в DomainModel, он дает мнеошибка в том, что он не распознает контроллер, и это правильно, он не распознает его, потому что, если я добавлю ссылку на WebUI, Vs начнут ругаться на меня, потому что это будет циклическая ссылка.

Как реализоватьthis?

это мой контроллер кода, который обслуживает RemoteValidation

[OutputCache(Location = OutputCacheLocation.None, NoStore = true)]
public class RemoteValidationController : Controller
{
    public JsonResult CheckPassword(string SmsCode)
    {
        return Json(12345, JsonRequestBehavior.AllowGet);
    }
}

// Реальная сущность в проекте DomainModel

public class SmsCustomer
{
    public int CustomerId { get; set; }
    public string Cli { get; set; }
    //this is what i have to validate on server
    public virtual string SmsCode { get; set; }

    public DateTime InsertDate { get; set; }
    public int CustomerDaysChoiceId { get; set; }
    public int CustomerAmountChoiceId { get; set; }

    [Required(ErrorMessage = "error")]
    [StringLength(128, ErrorMessage = "error")]        
    public string SelectedWords { get; set; }
    public SmsCustomerDaysChoice CustomerDaysChoice { get; set; }
    public SmsCustomerAmountChoice CustomerAmountChoice { get; set; }
}

это моя сущность после расширенияэто с помощью удаленного атрибута в WebUI.Models

 public class Customer : SmsCustomer
    {
        [Required(ErrorMessage = "Error required")]
        [StringLength(9, ErrorMessage = "Error length")]
        [Remote("CheckPassword", "RemoteValidation", ErrorMessage = "Error  remote")]
        public override string SmsCode { get; set; }
    }

это мой взгляд

@Html.TextBoxFor(c => c.SmsCode)
//error span
<span class="checkbox-form-error" data-valmsg-for="SmsCode" data-valmsg-replace="true">&nbsp;</span>

1 Ответ

1 голос
/ 06 июля 2011

Средства удаленной проверки очень специфичны для проекта WebUI.

Из-за этого я создал бы модель View, которая наследует от фактического класса, а затем переопределил свойство, которое требует удаленной проверки.Тогда вы сможете указать контроллер / действие для удаленной проверки.

Вы также можете поместить свою проверку в отдельный класс, как показано здесь ScottGu: http://weblogs.asp.net/scottgu/archive/2010/01/15/asp-net-mvc-2-model-validation.aspx

(Посмотритевниз по сообщению, перед последним шагом)

Также взгляните на это: Добавление DataAnnontations к сгенерированным частичным классам

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