最終編集: 問題は、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」に更新しました。