Использование удаленной проверки для проверки того, что поле имеет значение, которое не используется, если поле не имеет значения
Я получил указание от начальника использовать удаленную проверку вместо атрибута RequiredIf для проверки того, что определенное поле имеет значение, если оно может быть отредактировано пользователем.
Прямо сейчас мой код выглядит так -
Посмотреть модель
public class FooModel
{
// SNIP: Unimportant extra variables
public int? DeviceId;
public int? ProviderId;
[Remote("IsMessageRequired", "Foo",
AdditionalFields="DeviceId,CarrierId",
ErrorMessage="(required for other")]
public string MessageAddress { get;set; }
// SNIP: Unimportant other details
}
контроллер
public class FooController
{
// SNIP: Unimportant details
public JsonResult IsMessageRequired(string messageAddress, int? device, int? carrier)
{
if(!string.IsNullOrEmpty(messageAddress))
return Json(true, JsonRequestBehavior.AllowGet);
// Conditions:
// A) Device = "Samsung" / Carrier = "Other"
// B) Device = "Other"
if(device = FooModel.GetDeviceIdByName("Samsung")
&& carrier = FooModel.GetProviderIdByName("Other")
{
return Json(! string.IsNullOrEmpty(pageAddress), JsonRequestBehavior.AllowGet);
}
if(device = FooModel.GetDeviceIdByName("Other"))
{
return Json(! string.IsNullOrEmpty(pageAddress), JsonRequestBehavior.AllowGet);
}
// Default condition occurs on first-run scenarios.
return Json(true, JsonRequestBehavior.AllowGet);
}
// SNIP: Other unimportant details
}
... И наконец, мой взгляд:
@model FooProject.Models.FooModel
@Html.DropDownFor(x => x.DeviceId)
@Html.DropDownFor(x => x.ProviderId)
@Html.TextBoxFor(x => x.MessageAddress)
@Html.ValidationMessageFor(x => x.MessageAddress)
Вопрос: проверка запускается только при вводе значения, но никогда, когда текстовое поле не содержит значения. Работает ли удаленная проверка только при наличии значения в текстовом поле? Если нет, то как я подхожу к этой настройке неправильно?
1 ответ
Решение
Срабатывает только когда $.trim
возвращает значение - так для всех непустых и непробельных значений.