Внутри действия моего контроллера У меня есть следующий код:Как добавить ошибки проверки в коллекцию проверки asp.net mvc?
public ActionResult GridAction(string id)
{
if (String.IsNullOrEmpty(id))
{
// add errors to the errors collection and then return the view saying that you cannot select the dropdownlist value with the "Please Select" option
}
return View();
}
UPDATE:
if (String.IsNullOrEmpty(id))
{
// add error
ModelState.AddModelError("GridActionDropDownList", "Please select an option");
return RedirectToAction("Orders");
}
UPDATE 2:
Вот мой обновленный код:
@Html.DropDownListFor(x => x.SelectedGridAction, Model.GridActions,"Please Select")
@Html.ValidationMessageFor(x => x.SelectedGridAction)
Модель loo кс, как следующее:
public class MyInvoicesViewModel
{
private List<SelectListItem> _gridActions;
public int CurrentGridAction { get; set; }
[Required(ErrorMessage = "Please select an option")]
public string SelectedGridAction { get; set; }
public List<SelectListItem> GridActions
{
get
{
_gridActions = new List<SelectListItem>();
_gridActions.Add(new SelectListItem() { Text = "Export to Excel", Value = "1" });
return _gridActions;
}
}
}
А вот мой контроллер действия:
public ActionResult GridAction(string id)
{
if (String.IsNullOrEmpty(id))
{
// add error
ModelState.AddModelError("SelectedGridAction", "Please select an option");
return RedirectToAction("Orders");
}
return View();
}
Ничего не происходит! Я полностью потерял это!
UPDATE 3:
Я сейчас, используя следующий код, но до сих пор проверка не стрельбы:
public ActionResult GridAction(string id)
{
var myViewModel= new MyViewModel();
myViewModel.SelectedGridAction = id; // id is passed as null
if (!ModelState.IsValid)
{
return View("Orders");
}
UPDATE 4:
$("#linkGridAction").click(function() {
alert('link grid action clicked');
$.get('GridAction/', { SelectedGridAction: $("#SelectedGridAction").val() }, function (result) {
alert('success');
});
});
и контроллер выглядит следующим образом :
// OrderViewModel has a property called SelectedGridAction.
public ActionResult GridAction(OrderViewModel orderViewModel)
{
return View();
}
UPDATE 5: Проверка не стрельбы:
public ActionResult GridAction(OrderViewModel orderViewModel)
{
if (!ModelState.IsValid)
{
return View("Orders", orderViewModel);
}
return View();
}
К сожалению, существует значение, когда пользователь выбирает параметр «Пожалуйста, выберите». – johndoe
@johndoe, не должно быть. Если вы используете следующий вспомогательный метод: '<% = Html.DropDownListFor (x => x.Id, Model.Items," - выберите - ")%>', чтобы сгенерировать выпадающее меню, никакое значение не будет отправлено и проверено будет автоматически работать. Также имеет смысл отправлять пустую строку, когда пользователь ничего не выбрал, а не какое-то фиктивное значение. –
Я также должен добавить, что страница не отправляется (кнопка отправки), но действие вызывается по ссылке, и поэтому валидация не увольняется! – johndoe