0

asp .net mvc3 c# でアプリケーションを作成しています。ドロップダウン リストを作成しましたが、Jquery を使用してクライアント側の検証を行うことができません。

私はそれに関連する多数の記事を見て、これが asp .net mvc3 のバグであることを知っています。ただし、私の場合、回避策はどれも機能しませんでした。

私のコードは以下の通りです:

実在物

[Required(ErrorMessage = "Furnishing is required.")]
[Display(Name = "Furnishing*")]
public int FurnishedType { get; set; }

意見:

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

<div class="editor-label">
    @Html.LabelFor(model => model.Property.FurnishedType)
    @Html.DropDownListFor(model => model.Property.FurnishedType, Model.FurnishedTypes, "--Select One--")
</div>
<div class="editor-field add-property-error">            
    @Html.ValidationMessageFor(model => model.Property.FurnishedType)
</div>

コントローラ:

public ActionResult AddProperty()
{
    AddPropertyViewModel viewModel = new AddPropertyViewModel
    {
        ...
        FurnishedTypes = websiteRepository.GetFurnishedTypeSelectList(-1),
        ...
    };
    return View(viewModel);
}

public IEnumerable<SelectListItem> GetFurnishedTypeSelectList(int selectedId)
{
    return db.FurnishedType
        .OrderBy(x => x.FurnishedTypeDescription)
        .ToList()
        .Select(x => new SelectListItem
        {
            Value = x.FurnishedTypeId.ToString(),
            Text = x.FurnishedTypeDescription
        });
}

以下のような値を持つデータベースがあります

1 Furnished
2 Part Furnished
...

これは、選択リストに入力するために使用されます。

現在、これは必須フィールドですが、ユーザーが値を選択したかどうかを確認するためにクライアント側の検証を行うことができませんか? どんな助けでも感謝します

4

2 に答える 2

0

私の提案は、次のことを行うことです

ビューで

@using (Html.BeginForm("AddProperty", "Home", FormMethod.Post, new { id = "myForm" }))
{ 
    <div class="editor-label">
        @Html.LabelFor(model => model.Property.FurnishedType)
        @Html.DropDownListFor(model => model.Property.FurnishedType, Model.FurnishedTypes)
    </div>
    <div class="editor-field add-property-error">            
        @Html.ValidationMessageFor(model => model.Property.FurnishedType)
    </div>
}

<script type="text/javascript">

    $.validator.addMethod('selectNone', function (value, element) {
        return this.optional(element) || value != -1;
    }, "Furnishing is required.");


     $("#myForm").validate({
         rules: { FurnishedType: { selectNone: true }}
     });

</script>

コントローラーで

public IEnumerable<SelectListItem> GetFurnishedTypeSelectList(int selectedId)
{
    List<SelectListItem> Lists = new List<SelectListItem>();
    Lists = db.FurnishedType
        .OrderBy(x => x.FurnishedTypeDescription)
        .ToList()
        .Select(x => new SelectListItem
        {
            Value = x.FurnishedTypeId.ToString(),
            Text = x.FurnishedTypeDescription
        });

    Lists.Insert(0, new SelectListItem { Text = "--Select One--", Value = "-1" });

    return Lists;
}
于 2012-11-08T04:04:15.650 に答える
0

-1 を "--select one--" に割り当てた場合

次のようなものがあります。

$(document).ready(function () {
    $("input[type='submit']").click(function (e) {
        if($("select").val()==="-1"){
           e.preventDefault();
           // display error msg beside ddl too
      }
    });
}
)
于 2012-11-07T23:55:13.183 に答える