Ví dụ sau đây phù hợp với tôi khi sử dụng JavaScript không phô trương trong MVC3. Tôi đang làm một cái gì đó rất giống nhau. Với JsonResponse
lớp sau:
public enum Status
{
Ok,
Error
}
public class JsonResponse
{
public Status Status { get; set; }
public string Message { get; set; }
public List<string> Errors { get; set; }
}
điều khiển của tôi có thể có một phương pháp như sau:
[HttpPost]
public ActionResult Login(UserLoginModel model)
{
JsonResponse res = new JsonResponse();
if (!ModelState.IsValid)
{
res.Status = Status.Error;
res.Errors = GetModelStateErrorsAsString(this.ModelState);
res.Message = "Oh dear, what have you done. Check the list of errors dude!";
}
else
{
// Save it here...
// Return success
res.Status = Status.Ok;
res.Message = "Everything was hunky dory";
}
return Json(res);
}
Và ModelStateDictionary có thể được liệt kê cho các lỗi như vậy:
private List<string> GetModelStateErrorsAsString(ModelStateDictionary state)
{
List<string> errors = new List<string>();
foreach (var key in ModelState.Keys)
{
var error = ModelState[key].Errors.FirstOrDefault();
if (error != null)
{
errors.Add(error.ErrorMessage);
}
}
return errors;
}
Sau đó, trong tôi xem Tôi có thể có Bài đăng JSON sau:
<script type="text/javascript">
$("form").submit(function (evt) {
// validate
$('form').valid();
// extract values to submit
var form = $(this),
username = form.find("[name=Username]").val(),
password = form.find("[name=Password]").val(),
json = JSON.stringify({
Username: username,
Password: password
});
$.ajax({
url: form.attr("action"),
type: 'POST',
contentType: 'application/json; charset=utf-8',
dataType: 'json',
data: json,
success: function (result) {
alert(result.Message);
}
});
// stop form submitting
evt.preventDefault();
});
</script>
Tôi đang sử dụng jQuery.tmpl
để hiển thị lỗi. Tôi đã loại trừ nó từ ví dụ này mặc dù.
How are you đăng JSON này? Bạn đang sử dụng AJAX? –
có, đăng qua ajax –
@TheCodeKing Bạn có đang liên kết lại câu hỏi này không? –