Я пытаюсь использовать следующий вспомогательный класс
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Runtime.CompilerServices;
using System.Web.Mvc;
using System.Web.Routing;
namespace myNamespace
{
public static class ValidationHelper
{
public static MvcHtmlString ValidationImage(this HtmlHelper helper, string name)
{
if (helper.ViewData.ModelState[name] == null || helper.ViewData.ModelState[name].Errors == null || helper.ViewData.ModelState[name].Errors.Count == 0)
{
return MvcHtmlString.Empty;
}
var tag = new TagBuilder("img");
tag.Attributes.Add("src", "../Content/Images/check_bg_invalid.png");
tag.Attributes.Add("alt", helper.ViewData.ModelState[name].Errors[0].ErrorMessage);
tag.Attributes.Add("title", helper.ViewData.ModelState[name].Errors[0].ErrorMessage);
tag.Attributes.Add("class", HtmlHelper.ValidationMessageCssClassName);
return MvcHtmlString.Create(tag.ToString(TagRenderMode.SelfClosing));
}
}
}
И использую это в представлении:
@Html.ValidationImage("FirstName")
, чтобы попытаться получить изображение для запуска, когда есть проверкаошибка.
Итак, мои:
@Html.TextBox("FirstName", null, new { @class = "my_input" })
в том же виде (все в пределах @ Html.BeginForm)
Это мой класс model.cs:
public class QuoteModel
{
[Required(ErrorMessage = "You must specify a First Name.")]
public string First Name { get; set; }
}
А это мой класс controller.cs:
public ActionResult Quote()
{
//return View();
var model = new QuoteModel();
return View(model);
}
[HttpPost]
public ActionResult Quote(QuoteModel model)
{
if (ModelState.IsValid)
{
try
{
}
catch (Exception)
{
return View(model);
}
}
return RedirectToAction("QuoteSuccess");
}
public ViewResult QuoteSuccess()
{
return View();
}
Имейте в виду, что я мог сделать опечатку во всех предыдущих кодовых блоках.
Первоначально,Я использовал
@Html.ValidationMessage("FirstName")
и сообщение об ошибке сработало бы после нажатия кнопки отправить.Я пытаюсь теперь использовать вышеупомянутый помощник для ValidationImage, но ничего не срабатывает (и сообщение об ошибке не отображается).Также ничего не выводится с тегом <img>
.На странице не возникает ошибок.
Кроме того, у меня есть два других вопроса: 1) Я также хотел бы отобразить сообщение об успешном завершении проверки (т. Е. Небольшое изображение с надписью «ОК»), но явозникли проблемы с тем, чтобы просто подняться на работу в первую очередь.2) Раньше мне не удавалось (до использования помощника) отобразить подтверждение на стороне клиента.
Я использую
@{ Html.EnableClientValidation(); }
в том же виде.Я поместил это сверху (после @model).Имеет ли значение размещение?
Я также использовал следующее в своем _layout.cshtml
<script language="javascript" src="@Url.Javascript("jquery.validate.min")" type="text/javascript"></script>
<script language="javascript" src="@Url.Javascript("jquery.validate.unobtrusive.min")" type="text/javascript"></script>
Обратите внимание, что я использую помощник, поэтому нет необходимости в расширении ".js" - это сработало впрошлое и проявляется в виде источника.Так что никаких проблем нет.
Наконец, у меня действительно настроен мой web.config:
<appSettings>
<add key="ClientValidationEnabled" value="true" />
<add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
Любые мысли по поводу любой из моих проблем (особенно основной) очень ценятся.