Форма MVC не проверяется - PullRequest
0 голосов
/ 03 марта 2011

Я очень новичок в MVC 3.

Я использую пользовательские помощники для элементов управления, но когда я отправляю форму, элемент управления не проверяется.

Может кто-нибудь сказать мне, если я что-то упустил? Ниже приведен фрагмент кода.

public static MvcHtmlString TextBox(string fieldName)  
{  
        TagBuilder tagBuilder = new TagBuilder("Input");

        tagBuilder.MergeAttribute("type", "Text");  
        tagBuilder.AddCssClass("text-box");  
        tagbuilder.MergeAttribute("data-val","true");
        tagbuilder.MergeAttribute("data-val-regex-pattern","true");  
        tagbuilder.MergeAttribute("data-val","true");

        TagBuilder validator = new TagBuilder("span");

        validator.MergeAttribute("data-valmsg-for", fieldName);  
        validator.MergeAttribute("data-valmsg-replace", "true");  
        validator.MergeAttribute("class", "field-validation-valid");  

        return new MvcHtmlString(string.Concat(tagBuilder.ToString(), validator.ToString()));  
}  

Представление имеет следующий код

@using (Html.BeginForm())
{
    @Html.ValidationSummary(true)

    <div class="main-border" style="width: 890px;">
        <div style="clear: both;">
            &nbsp;
        </div>
        <div style="padding: 0px 20px 0px 20px;">
            <table style="width: 100%">
                <tr>
                    <td colspan="2" class="main-subhead2">
                        <div class="label-text">
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>Email :</td>
                    <td>@ControlHelper.TextBox("txtEmailAddress")</td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="submit"  onclick="return validate(this.form);" /></td>
                </tr>
            </table>
        </div>
    </div>
}

исходный код отрисовки страницы:

<form action="/" method="post">
    <div class="main-border" style="width: 890px;">
        <div style="clear: both;">
            &nbsp;
        </div>
        <div style="padding: 0px 20px 0px 20px;">
            <table style="width: 100%">
                <tr>
                    <td colspan="2" class="main-subhead2">
                        <div class="label-text">
                        </div>
                    </td>
                </tr>
                <tr>
                    <td>Email :</td>
                    <td><Input class="text-box" data-val="True" data-val-regex-pattern="^([0-9a-zA-Z]([-\.\w]*[0-9a-zA-Z]))*@[A-Za-z0-9_\.-]+[A-Za-z0-9_][A-Za-z0-9_]$" name="txtEmailAddress" type="Text" visible="True"></Input><span class="field-validation-valid" data-valmsg-for="txtEmailAddress" data-valmsg-replace="true"></span></td>
                </tr>
                <tr>
                    <td></td>
                    <td><input type="submit" value="submit"  /></td>
                </tr>
            </table>
        </div>
    </div>
</form>

Ответы [ 3 ]

1 голос
/ 03 марта 2011

Ввод должен быть в нижнем регистре:

TagBuilder tagBuilder = new TagBuilder("input");

И не забудьте включить ненавязчивые сценарии проверки на стороне клиента на свою страницу:

<script src="@Url.Content("~/Scripts/jquery.validate.js")" type="text/javascript"></script>
<script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.js")" type="text/javascript"></script>

и убедитесь, что проверка на стороне клиента выполненавключено в web.config:

<appSettings>
    <add key="ClientValidationEnabled" value="true"/> 
    <add key="UnobtrusiveJavaScriptEnabled" value="true"/> 
</appSettings>
0 голосов
/ 12 августа 2015

Может потребоваться добавить атрибут (data-val-regex):

public static MvcHtmlString TextBox(string fieldName)  
{  
        TagBuilder tagBuilder = new TagBuilder("Input");

        tagBuilder.MergeAttribute("type", "Text");  
        tagBuilder.AddCssClass("text-box");  
        tagbuilder.MergeAttribute("data-val","true");
        tagbuilder.MergeAttribute("data-val-regex-pattern","true");  
        tagbuilder.MergeAttribute("data-val","true");
        tagbuilder.MergeAttribute("data-val-regex","Field must be character (?![ء|ئ|ؤ])[ء-يA-Za-z]");

        TagBuilder validator = new TagBuilder("span");

        validator.MergeAttribute("data-valmsg-for", fieldName);  
        validator.MergeAttribute("data-valmsg-replace", "true");  
        validator.MergeAttribute("class", "This is an invalid Email format!");  

        return new MvcHtmlString(string.Concat(tagBuilder.ToString(), validator.ToString()));  
}  
0 голосов
/ 03 марта 2011

Существует ряд причин, по которым ваша форма может не проверяться. В MVC3 вы, скорее всего, захотите использовать ненавязчивую проверку (через jQuery). Вы можете узнать, как это сделать (это не большое изменение - просто включите правильные библиотеки JavaScript и обновите web.config) на веб-сайте Microsoft ASP.NET .

...