2017-06-03 42 views
0

我試圖驗證AccessoryType唯一性。我已經把模型中的遠程驗證。服務器端遠程驗證不開火

這裏的代碼設置,

在模型中,

public class AccessoryTypeMasterMetaData 
{ 
    [Remote("checkAccessoryTypeExist", "AccessoryType")] 
    [Required(ErrorMessage = "Please enter accessory type.")] 
    [StringLength(20, ErrorMessage = "Please enter maximum of {1} characters in accessory type.")] 

    public string AccessoryType { get; set; } 
} 

我已經把** checkAccessoryTypeExist方法在API控制器,**

[HttpPost] 
    [AllowAnonymous] 
    [Route("api/AccessoryType/checkAccessoryTypeExist")] 
    public IHttpActionResult checkAccessoryTypeExist(string accessoryType, int accessoryTypeID) 
    { 
     AccessoryTypeMasterService accessoryTypeMasterService = new AccessoryTypeMasterService(); 

     BaseResponseModel<bool> baseResponseModel = new BaseResponseModel<bool>(); 
     baseResponseModel.status = true; 
     baseResponseModel.data = false; 

     if (!string.IsNullOrEmpty(accessoryType)) 
     { 
      baseResponseModel.data = accessoryTypeMasterService.CheckAccessoryType(accessoryType, accessoryTypeID); 
      baseResponseModel.message = LES_Common.STATUS_SUCCESS; 
     } 

     return new BaseResponseResult<bool>(baseResponseModel, Request); 

    } 

所以問題是遠程驗證不在服務器端觸發 但是其他我的驗證是射擊(如Required,StringLength)

我的代碼有問題嗎?幫助我..

回答

0

在您的方法聲明中有兩個參數accessoryType , accessoryTypeID。在您的AccessoryTypeMasterMetaData模型中,您只能將其應用於AccessoryType。所以,如果你需要額外accessoryTypeID檢查,那麼你需要的屬性是這樣的改變RemoteAttribute將只得到AccessoryType值:

[Remote("checkAccessoryTypeExist", "AccessoryType",HttpMethod = "POST", AdditionalFields = nameof(AccessoryTypeID), ErrorMessage = "Error message to display.")] 

如果你改變你的方法簽名,以它的更好:

public IHttpActionResult checkAccessoryTypeExist(AccessoryTypeMasterMetaData modelData) 
    { 


// You can access it here i.e. modelData.AccessoryType and modelData.AccessoryTypeID 

    } 
+0

我發現錯誤'nameof'在模型代碼中不存在.. –

+1

我認爲您使用的是較低版本,爲什麼它不支持。你可以刪除'nameof(AccessoryTypeID)'並使用''「AccessoryTypeId」'。 –

+0

如何使用模型端的'GetUrl'字段使其工作,因爲我的路線是「api/accessoryType/checkAccessoryTypeExist」? –