ASP.NET Клиентская Проверка MVC с jQuery с помощью HTML. ValidationMessage?

Это относится и к modellnr, и EW444 к именам столбцов:

UPDATE produkt_info SET antal = 4 WHERE modellnr = EW444

Это можно увидеть из ошибки, которая говорит:

[1111 ] колонка "ew444" не существует .

Если вы хотите сравнить modellnr со строковым значением 'EW444', вам нужно поместить его в кавычки:

UPDATE produkt_info SET antal = 4 WHERE modellnr = 'EW444'
5
задан aherrick 19 March 2009 в 11:07
поделиться

4 ответа

Вы могли записать тонну кода, чтобы сделать это. Или Вы могли просто использовать xVal, который свободен и делает точно это, плюс намного больше. Поместите аннотации значения на свои типы.NET, добавьте несколько простых вещей к своему aspx, и Вы получаете проверку jQuery бесплатно. Плюс он идет с поставщиками для популярных платформ, и это очень настраиваемо в случае, если Вам нужна более сложная проверка.

Я не вижу потребности изобрести велосипед здесь.

8
ответ дан 13 December 2019 в 19:36
поделиться

При помещении сообщения статически в страницу и набор, это - дисплей ни к "одному", Вы могли показать, что обмениваются сообщениями одновременно, Вы изменяете класс для поля ввода.

    <p>
        <label for="email">
            Email:</label>
        <%= Html.TextBox("email") %><span style="display:none" class="email-error">Email required</span>
        <%= Html.ValidationMessage("email") %>
    </p>

Затем в Вашем JS добавляют, что эта строка под частью изменяет это:

        if ($("input[name='email']").val().length < 1) {
            $("input[name='email']").addClass("input-validation-error");
            valid = false;
        }

к этому:

        if ($("input[name='email']").val().length < 1) {
            $("input[name='email']").addClass("input-validation-error");
            $("span.email-error").show();
            valid = false;
        }

Вам, возможно, понадобится некоторый CSS для расположения того материала соответственно, но функционально он должен сделать то, что Вы хотите.

Править:

Избегать дополнительной замены разметки:

$("span.email-error").show();

с:

$("input[name='email']").after('<span style="display:none" class="email-error">Email required</span>');
1
ответ дан 13 December 2019 в 19:36
поделиться

Это была бы идея просто использовать плагин проверки формы jQuery для стороны клиента? Легко реализовать в коде представления. Вы добавляете несколько тегов к полям ввода и добавляете несколько строк JavaScript в заголовке, и Вы сделаны. Конечно, необходимо было бы все еще кодировать что-либо, что это является 'очень пользовательским' так сказать.

2
ответ дан 13 December 2019 в 19:36
поделиться

Создайте HtmlHelper, который является ValidatedTextBox. Я сделал это отражение использования о своих моделях, создав полностью динамическую интеграцию jQuery с проверкой, но более простая версия работала бы как это (это будет, вероятно, работать, но не тестируется как есть). Хорошее место для запуска:

public static MvcForm BeginClientValidatedForm(this HtmlHelper helper, string formId)
{
    HttpResponseBase response = helper.ViewContext.HttpContext.Response;
    if (helper.ViewData.ModelState.IsValid)
    {
        response.Write("<ul class=\"validation-summary-errors\"></ul>\n\n");
    }

    response.Write(ClientValidationHelper.GetFormValidationScript(formId));
    response.Write("\n");

    // Inject the standard form into the httpResponse.
    var builder = new TagBuilder("form");
    builder.Attributes["id"] = formId;
    builder.Attributes["name"] = formId;
    builder.Attributes["action"] = helper.ViewContext.HttpContext.Request.Url.ToString();
    builder.Attributes["method"] = HtmlHelper.GetFormMethodString(FormMethod.Post);
    response.Write(builder.ToString(TagRenderMode.StartTag));

    return new MvcForm(response);
}

И соответствующий "GetFormValidationScript":

public static string GetFormValidationScript(string formId)
  {
    string scriptBlock =
    @"<script type=""text/javascript"">
    $(document).ready(function() {{
      $(""#{0}"").validate({{
        meta:""rules"",
        onkeyup:false,
        onfocusout:false,
        onclick:false,
        errorClass:""input-validation-error"",
        errorElement:""li"",
        errorLabelContainer:""ul.validation-summary-errors"",
        showErrors: function(errorMap, errorList) {{
            $(""ul.validation-summary-errors"").html("""");
            this.defaultShowErrors();
      }}";

      // etc...this is the standard jQuery.validate code.

      return string.Format(scriptBlock, formId);


  }

public static string ClientValidatedTextbox(this HtmlHelper htmlHelper, string propertyName, IDictionary<string, object> htmlAttributes, string validationType)
{
    var cssClassBuilder = new StringBuilder();
    cssClassBuilder.Append("text ");
    if (htmlAttributes == null)
    {
        htmlAttributes = new Dictionary<string, object>();
    }
    else if(htmlAttributes.ContainsKey("class"))
    {
        cssClassBuilder.Append(htmlAttributes["class"]);
    }

    switch validationType
    {
      case "email":
        cssClassBuilder.Append(" {rules: {email: true, messages: {email: 'A valid email is required.'}} } ");
        break;
    }

    htmlAttributes["class"] = cssClassBuilder.ToString();

    return htmlHelper.TextBox(propertyName, htmlAttributes);
}
0
ответ дан 13 December 2019 в 19:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: