我已經在System.ComponentModel.DataAnnotations
中使用Remote執行了此操作。請參考下面的代碼:
在ViewModel
(Properties
):
[Display(Name = "Email")]
[Remote("IsValidUserName", "Remote", AdditionalFields = "Email", HttpMethod = "Post")]
public string Email { get; set; }
這裏的 「遠程」 是Controller
名稱和 「IsValidUserName」 我們Method
。如下圖所示:
public class RemoteController : Controller
{
[AcceptVerbs(HttpVerbs.Post)]
public JsonResult IsValidUserName()
{
string email= Request.Form["Email"];
string message = "Email '"+ email+ "' is already taken";
if (!string.IsNullOrEmpty(email))
{
using (DbContext db = new DbContext())
{
if (!db.tb_Users.Any(x => x.email== email))
{
message = string.Empty;
}
}
}
if (message == string.Empty)
return Json(true, JsonRequestBehavior.AllowGet);
else
return Json(message, JsonRequestBehavior.AllowGet);
}
}
和View
頁面,你必須使用這個象下面這樣:
@Html.TextBoxFor(model => model.Email)
@Html.ValidationMessageFor(model => model.Email)
輸出將是:
要記住的要點: 您必須使用以下JavaScripts
用於運行此:
<script src="https://code.jquery.com/jquery-2.2.4.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validate/1.15.1/jquery.validate.min.jss"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery-validation-unobtrusive/3.2.6/jquery.validate.unobtrusive.min.js"></script>
希望它可以幫助你。
感謝。
你嘗試用'DataAnnotations'? –
@SunilKumar沒有。想知道如何舉個例子嗎?最後,我沒有那麼普遍的解決方案,只是在將錯誤消息拋出到View之前進行修改。它可以工作,但對於更多的錯誤消息絕對不是一個好主意。 :/如果你知道更好的解決方案,將很感激。 – Ian
您是使用'Asp.Net Identity'還是'MembershipProvider'? – trailmax