何が問題ですか?私は、フォームを送信するとドロップダウンリストは常にmodelstateを無効に設定します
@Html.DropDownListFor(x => x.Post.CategoryId, new SelectList(Model.Categories, "ID", "CategoryName"), "-- Please select --")
@Html.ValidationMessageFor(x => x.Post.CategoryId)
にModelStateは無効であり、このドロップダウンリストには、私は、ドロップダウンリストから値を選択するにもかかわらず、エラーとしてフラグが付けられます。
私は部分的
[MetadataType(typeof(Post_Validation))]
public partial class Post
{
}
class Post_Validation
{
[Required(ErrorMessage = "Please select a Category")]
public int CategoryId { get; set; }
}
コントローラとして、この「バディ」クラスを追加haved (ところで区分は私のポスト表ではFKがある):
// GET: /News/Add
[Authorize]
public ActionResult Add()
{
var model = new AddPostViewModel() { Categories = categoryRepository.GetAllCategories(), Post = new Post(), IsEditMode=false };
return View(model);
}
//
// POST: /News/Add
[Authorize]
[HttpPost]
public ActionResult Add(AddPostViewModel model)
{
if (!ModelState.IsValid)
{
..etc
}
}
モデルが正常に表示され、カテゴリDDLでvalidationforを削除しても大丈夫です。 CategoryIdはintです...それは問題になりますか? – raklos
@raklosでは、非整数をドロップダウンの値として使用している可能性があります。また、null可能な整数でのみ発生します。 nullでない整数を使用している場合、この場合は例外が発生します。 'CategoryId'はあなたが投稿しているコントローラーアクション内の値に割り当てられていますか? –
CategoryIdはnullに戻ります。IDはすべてintで、selectの各オプションのソース値を表示する整数は整数でもあります。 – raklos