3

現在、フィールドに次のデータ注釈があります

[StringLength(1000, MinimumLength = 6, ErrorMessage = "field must be atleast 6 characters")]
public string myField {get;set;}

ユーザーがフィールドに何かを入力した場合にのみ機能するようにデータ注釈を変更できますか? つまり、フィールドを空のままにしてもかまいませんが、ユーザーがフィールドに値を入力する場合、長さは 6 ~ 1000 文字にする必要があります。

4

1 に答える 1

19

StringLength属性の場合はすでにそうです。フィールドを空のままにすると、モデルは有効になります。これも試してみませんでしたか?

モデル:

public class MyViewModel
{
    [StringLength(1000, MinimumLength = 6, ErrorMessage = "field must be atleast 6 characters")]
    public string MyField { get; set; }
}

コントローラ:

public class HomeController : Controller
{
    public ActionResult Index()
    {
        return View(new MyViewModel());
    }

    [HttpPost]
    public ActionResult Index(MyViewModel model)
    {
        return View(model);
    }
}

意見:

@model MyViewModel

@using (Html.BeginForm())
{ 
    @Html.EditorFor(x => x.MyField)
    @Html.ValidationMessageFor(x => x.MyField)
    <button type="submit">OK</button>
}

フィールドを空のままにしておくと、検証エラーは発生しません。

于 2012-09-26T15:02:07.750 に答える