0

I'm using Remote Attribute in my Model to check duplicate Page Titles as follows

public class Page
{
  [Remote("CheckDuplicate", "Page", ErrorMessage = "Title already taken")]
  public string Title { get; set; }
}

And In controller, I'm returning JsonResult data based on "Check" result as follows:

public JsonResult CheckDuplicate(string Title)
{
   var result = db.Pages.Where(a => a.Title == Title).Count() == 0;
   return Json(result, JsonRequestBehavior.AllowGet);
}

This is working fine in Create action, But problem is, It's restricting me to Edit the Existing page, Since It's checking the same query.

How to solve this Problem? Please Suggest me something

4

4 に答える 4

5

あなたの質問は次のようになります: ASP.NET MVC 3 Remote validation to allow original value

AdditionalFields上記のStackOverflow投稿で提案されているように、モデルのリモート検証属性に引数を使用し、それをビューの非表示フィールドと組み合わせることが秘訣だと思います。次に、新しい値とともに「初期」値をリモート検証メソッドに送信し、両方の引数を使用して一意性チェックを行うことができます。

これを修正する方法の別の例は、https ://stackoverflow.com/a/4756796/700926 にあります。

のドキュメントは次のAdditionalFields場所にあります: http://msdn.microsoft.com/en-us/library/system.web.mvc.remoteattribute.additionalfields(v=vs.98).aspx

于 2012-09-02T16:15:15.420 に答える
1

こうあるべきだと思う

InitialUsername編集ページに隠しフィールドがあり、モデルにRemote属性が含まれている必要がありますUserAdditionalFieldsInitialUsername

コントローラ

    [HttpPost]
    public JsonResult doesUserNameExist(string UserName,string InitialUsername)
    {
        User user=null;
        //Check if user already exists
        if (UserName.Equals(InitialUsername)==false)
        {
         user = db.Users.Where(u => u.USERNAME == UserName).FirstOrDefault();
        }
        //

        return Json(user == null);
    }
于 2017-01-03T11:39:52.140 に答える
0

私は次の手順を使用して解決しました@Html.Hidden("InitialUserName", Model.UserName)

モデルに置く:[Remote("IsUserNameUsed", "User", AdditionalFields="InitialUserName")]

コントローラーアクションメソッドで、アクションメソッドを次のように記述します。

    public JsonResult IsUserNameUsed(string UserName, string InitialUserName){
    bool isExist = true;
    if(UserName  != string.empty && InitialUserName == "undefined"){
    var isexist= db.model.where( x=>x.UserName == UserName).single();
    if(isexist != string.empty){
    bool isExist = false;
    }

    if(UserName  != string.empty && InitialUserName != "undefined"){
    var isexist= db.model.where( x=>x.UserName == UserName && x.UserName != InitialUserName ).single();
    if(isexist != string.empty){
    bool isExist = false;
    }    
return Json(isExist , JsonRequestBehavior.AllowGet);  
}    
}
于 2016-02-17T05:39:14.530 に答える