2013-02-05 78 views
0

我收到來自上級的指令,使用遠程驗證而不是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返回一個值時觸發 - 所有非空和非空白值。 – Joe

回答

1

只有當$.trim返回一個值時纔會觸發 - 所有非空和非空白值都是如此。

+0

感謝您的信息!現在只是通知和恢復的問題。 –

+1

即使$ trim爲空也有解決方法嗎?我需要有一個字段,即使它是空的(因爲該字段只在某些情況下需要) – Webmixer

相關問題