0

最終編集: 問題は、ViewBag.PropName == Model.PropName; でした。修正: ViewBag.PropName ===> ViewBag.PropName2

初めての投稿です。私は新しいので、レイアウトを台無しにしたと思います...申し訳ありません!非表示の dropdownlistfor のクライアント側の検証で問題が発生しました。私は ASP.NET MVC3 を使用しており、このページには多くの非表示の ddl があります。ただし、一部の ddl では検証が機能しません。これまでに誰かがこれに問題を抱えたことがありますか?

これらは 2 つのプロパティです。1 動作、1 失敗

//VALIDATION FAILS
[Required]
[Range(0, 4)]
public int TiresBack { get; set; }

//VALIDATION WORKS
[Required]
[Range(0, 4)]
public int TechnicalState { get; set; }

これはかみそりの一部です:

<tr>//THIS DOESN'T WORK
    <td style="width: 38%;">  
        @txtFor("tiresBack")
    </td>
//This is JQuery Star-Rating.
    <td align="center" id="starsTiresBack">
    </td>
    <td>                            
        @Html.DropDownListFor(model => model.TiresBack, ViewBag.TiresBack as IEnumerable<SelectListItem>, new { style = "display:none;" })
        <input class="blueButton" type="button" id="btnBrandRearTires" value="@txtFor("brandTiresBack")" />
        <span>@Html.ValidationMessageFor(model => model.TiresBack)</span> <span>@Html.ValidationMessageFor(model => model.BrandRearTires)</span>
    </td>
</tr>
 //THIS WORKS
<tr>
    <td style="width: 38%;">
        @txtFor("technicalState")                            
    </td>
    <td id="starsTechnicalState" align="center">
    </td>
    <td>
        @Html.DropDownListFor(model => model.TechnicalState, ViewBag.TechState as IEnumerable<SelectListItem>, new { style = "display:none;" })
        <input class="blueButton" type="button" id="btnTechnicalStateDescription" value="@txtFor("technicalStateDescriptionButton")" style="display:none;"/>
        <span>@Html.ValidationMessageFor(model => model.TechnicalState)</span> <span>@Html.ValidationMessageFor(model => model.TechnicalStateDescription)</span>
    </td>
</tr>

EDIT1: このメソッドを使用してコントローラで初期化:

    public static List<SelectListItem> CreateDefaultStateList(int? selected = -1)
    {
        List<SelectListItem> sl = new List<SelectListItem>();
        for (int i = -1; i < 5; i++)
        {
            SelectListItem sli = new SelectListItem();
            if (i == 0 || i == -1)
                sli.Text = "";
            else
                sli.Text = i.ToString();
            sli.Value = i.ToString();
            if (i == selected)
                sli.Selected = true;
            sl.Add(sli);
        }
        return sl;
    }

EDIT2: 作成コントローラー。defaultstatelist は、上記のメソッドから返されたものです。

List<SelectListItem> defaultStateList = CreateDefaultStateList();

[Authorize]
public ActionResult Create()
{
    FillViewBag();
    ViewBag.PropX = defaultStateList;
    ViewBag.TiresFront = defaultStateList;
    ViewBag.TechState = defaultStateList;
    ViewBag.PropY= defaultStateList;
    ViewBag.PropZ= defaultStateList;
    ViewBag.PropA= defaultStateList;
    ViewBag.PropB= defaultStateList;
    ViewBag.PropC= defaultStateList;
    ViewBag.PropD= defaultStateList;  

    return View(); 
}

これを入力すると、メソッドのデフォルト値に気付きます。そうかも… ==> やってみたよね。コードをデフォルト値として「-1」に更新しました。

4

1 に答える 1

0

問題は、ViewBag.PropName == Model.PropName; FIX: 名前ViewBag.PropNameを のような別のものに変更することViewBag.PropName2でした。

于 2012-05-16T11:09:46.100 に答える