0

私は私のモデルにこれを持っています

    [Required]
    public string AppName { get; set; }

私のレイアウトページに

<script src="@Url.Content("~/Scripts/jquery-ui-1.8.24.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.unobtrusive-ajax.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>



my view has this inside BeginForm


   @Html.EditorFor(model => model.App.AppName, new { size = 35 })
    @Html.ValidationMessageFor(model => model.App.AppName)
    <input type="submit" value="Start Business" class="demo-button ui-state-default ui-corner-all" />


this is how its rendered

            <input id="App_AppName" class="text-box single-line watermark" type="text" value="" name="App.AppName" data-val-required="The AppName field is required." data-val="true">

<span class="field-validation-valid" data-valmsg-replace="true" data-valmsg-for="App.AppName"></span>

送信を押すと、AppNameが必須であるという検証は行われませんが、空のフィールドでサーバーにポストバックするだけです。

私はvalidationMsgForで非表示としていくつかのフィールドを追加しましたが、それは機能しています。

だから私が持っているのは

public class AppContent
{

    public App App { get; set; }                
    public bool CreateModal { get; set; }
    public AppContent()
    {

    }

}

私の見解はAppContentタイプです。

私が気づいたことの1つは、Appオブジェクトを使用してビューを直接追加すると、必要に応じてAppNameが検出されることです。しかし、AppName型のAppCOntentを使用して実行すると、検証は表示されませんが、文字列以外の他の非表示フィールドでは機能します。

4

3 に答える 3

0

web.configでクライアント検証を有効にする必要があります。

<appSettings>
  <add key="ClientValidationEnabled" value="true" />
  <add key="UnobtrusiveJavaScriptEnabled" value="true" />
</appSettings>
于 2013-02-11T01:30:01.363 に答える
0

このスクリプトを配置する必要があります

<script src="@Url.Content("~/Scripts/jquery-1.5.1.min.js")" type="text/javascript"></script>
于 2013-02-11T08:27:39.630 に答える
0

それは私が持っていた透かしのせいで、代わりにプレースホルダーを使わなければなりませんでした。

于 2013-03-08T19:52:50.103 に答える