9

次のような属性でマークされた DropDownLists のエディター テンプレートがあります。

[AttributeUsage(AttributeTargets.Property)]
public class DropDownListAttribute : UIHintAttribute
{
    public string SelectListName { get; set; }
    public DropDownListAttribute(string selectListName)
        : base("DropDownList", "MVC", selectListName)
    {
        SelectListName = selectListName;
    }
}

そして、それ自体は次のようになります。

@using Comair.RI.UI.Core
@{
    var list = this.GetModelSelectList();
    var listWithSelected = new SelectList(list.Items, list.DataValueField, list.DataTextField, Model);
}
@Html.DropDownListFor(m => Model, listWithSelected, " - select - ")

ここでの私の問題は、サーバー側のみを検証することです。これは、ユーザーがすべてのクライアント側の検証を解決するのは非常に面倒で、新しい驚きのサーバー側の検証を送信して取得するだけです。

4

2 に答える 2

1

クライアント側の検証が機能しない場合、次のいずれかの理由が原因である可能性があります。

  1. あなたの web.config にはそのエントリがありません:

    <アプリ設定>
    <add key="ClientValidationEnabled" value="true" />
    <add key="UnobtrusiveJavaScriptEnabled" value="true" />
    </appSettings>
    
  2. 検証スクリプトを追加するのを忘れました:

    <script src="@Url.Content("~/Scripts/jquery.validate.min.js")"></script>
    <script src="@Url.Content("~/Scripts/jquery.validate.unobtrusive.min.js")"></script>
    
  3. コントロールがHtml.BeginFormまたはで囲まれていないAjax.BeginForm

  4. 以下を使用する場合、ASP.NET MVC 4 に更新した後、クライアント側の検証が EditorFor で機能しなくなることがあります。

    @Html.DropDownListFor(m => Model, listWithSelected, " - select - ")
    

    に置き換えるModelm問題が解決するはずです:

    @Html.DropDownListFor(m => m, listWithSelected, " - select - ")
    
于 2013-01-17T18:14:50.327 に答える
0

必要なクラスを設定する

@Html.DropDownListFor(m => Model, listWithSelected, " - select - ", new { @class='required' })

ASP MVC 3: 選択リストでクライアント側の検証を行うにはどうすればよいですか? を参照してください。

于 2013-01-18T11:15:32.140 に答える