2013-10-30 31 views
4

這裏是我的模型代碼遠程Attribue驗證在Asp.Net MVC不點火

public class BlobAppModel 
{ 
    [Required(ErrorMessage="Please enter the name of the image")] 
    [Remote("IsNameAvailable","Home",ErrorMessage="Name Already Exists")] 
    public string Name { set; get; }   
} 

而且在我的控制器我有

public JsonResult IsNameAvailable(string Name) 
{ 
    bool xx= BlobManager.IsNameAvailable(Name); 
    if (!xx) 
    { 
     return Json("The name already exists", JsonRequestBehavior.AllowGet); 
    } 
    return Json(true, JsonRequestBehavior.AllowGet); 
} 

而在我的數據我有

public static bool IsNameAvailable(string Name) 
{ 
    var test = ""; 
    using (var x = new BlobTestAppDBEntities()) 
    { 
     try 
     { 
      test=x.BlobApps.Where(m => m.Name == Name).FirstOrDefault().Uri; 
      if (test != null) 
       return false; 
      else 
       return true; 
     } 
     catch (Exception) 
     { 
      return true; 
     } 
    } 
} 

在我看來,我也添加了腳本

<script src="@Url.Content("~/Scripts/jquery.validate.min.js")" type="text/javascript"></script> 
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")" type="text/javascript"></script> 
@using (Html.BeginForm("Upload", "Home", FormMethod.Post, new { enctype = "multipart/form-data" })) 
    { 

    <td> @Html.Label("Name:") 
       @Html.TextBoxFor(m => m.Name) 
       @Html.ValidationMessageFor(m=>m.Name)</td>} 

但遠程驗證不會解僱。是否有任何問題與我的代碼?

+0

類似的問題是另外一個頁面: HTTP://計算器.com/a/37366502/4146766 –

回答

4

您在視圖中缺少jquery.unobtrusive-ajax.js文件,請添加並重試。

<script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.js")" type="text/javascript"></script> 

,如果你不把它從的NuGet獲得

的NuGet鏈接http://www.nuget.org/packages/Microsoft.jQuery.Unobtrusive.Ajax/

+0

我甚至添加了腳本,但沒有區別。 –

+1

您是否在控制檯上看到任何錯誤?也請刪除最小文件,並用實際文件進行嘗試。它很容易調試。 –

+0

不,我沒有得到任何錯誤..我甚至現在添加了實際的文件..但仍然沒有變化 –

0

這些設置需要在web.config中去太:

<appSettings> 
    <add key="ClientValidationEnabled" value="true" /> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true" /> 
</appSettings> 
10

確保您的驗證方法使用[AllowAnonymous]屬性進行修飾([HttpPost]也可能需要)。

[AllowAnonymous] 
public JsonResult IsNameAvailable(string Name) 

另外一個提示:使用瀏覽器的開發人員工具(主要瀏覽器中的F12按鈕)來查看Json請求的狀態。

+0

謝謝,它對我的​​工作,我只需在缺少的操作頂部添加[AllowAnonymous]屬性即可。 – adnan

1

我知道這是有點晚了,如果你使用剃刀語法,我發現除了你的一切你還需要:

@Scripts.Render("~/bundles/jqueryval") 
+0

這正是我所錯過的。謝謝! – Vippy