Asp.NetMVC Attribute検証datamodel(一)
1.Required,StringLength等のAttribute,aspを用いることができる.Netmvcでは、独自の認証Attributeをカスタマイズすることもできます.
例:
2.DataModelを定義し、上記のattributeを使用する
ここでアルバムを定義するTitleには「月」という文字が含まれている必要があります
3.プロパティをフロントページにバインドする
4.ControllerにActionを追加する.
プログラムを実行すると、フロントページで値を変更して検証効果を見ることができます.
例:
// Title
public class AlbumTitleValidateAttribute : ValidationAttribute
{
private readonly string _keyword;
public AlbumTitleValidateAttribute(string keyword)
{
if (string.IsNullOrEmpty(keyword))
throw new Exception("invalid usage");
_keyword = keyword;
}
protected override ValidationResult IsValid(object value, ValidationContext validationContext)
{
if (value != null && value.ToString().ToUpper().Contains(_keyword.ToUpper()))
{
return ValidationResult.Success;
}
else
return new ValidationResult(string.Format("Title does not contain the keyword({0})", _keyword));
}
}
2.DataModelを定義し、上記のattributeを使用する
public class Album
{
public int ID { get; set; }
[Required]
[AlbumTitleValidateAttribute(" ")]
public string Title { get; set; }
[Required]
[StringLength(3)]
public string Author { get; set; }
}
ここでアルバムを定義するTitleには「月」という文字が含まれている必要があります
3.プロパティをフロントページにバインドする
@using (Html.BeginForm("Index", "Home", FormMethod.Post))
{
<p>
@Html.EditorFor(m => m.Title)
@Html.ValidationMessageFor(m => m.Title)
</p>
<p>
@Html.EditorFor(m => m.Author)
@Html.ValidationMessageFor(m => m.Author)
</p>
@Html.HiddenFor(m => m.ID)
<input type="submit" value="submit" />
}
4.ControllerにActionを追加する.
[HttpPost]
public ActionResult Index(Album album)
{
if (ModelState.IsValid)
{
return RedirectToAction("About");
}
return View(album);
}
プログラムを実行すると、フロントページで値を変更して検証効果を見ることができます.