私は、次のビューモデルASP.NET MVC 5 ViewModelで同時にプロパティをnull可能にする必要がありますか?
public class FormViewModel
{
[Required]
public DateTime? LocalFrom { get; set; }
[Required]
public DateTime? LocalTo { get; set; }
}
が、私はここで、次のアクション
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Index([Bind(Include = "LocalFrom,LocalTo")] FormViewModel model)
{
if (ModelState.IsValid)
{
var presenter = new ManagePresenter(model);
return View(presenter);
}
return View(model); // here model.LocalFrom, model.LocalTo should be null
}
を持つコントローラで私のHTMLフォームがNULL可能になった場合、私はわからない
<form class="form-horizontal" action="/Manage/Index" method="post">
@Html.AntiForgeryToken()
<div class="form-group">
<label class="control-label col-sm-2" for="LocalFrom">From</label>
<div class="col-sm-10">
<input type="datetime" class="form-control" id="LocalFrom" name="LocalFrom" value="@Model.LocalFrom" required>
</div>
</div>
<div class="form-group">
<label class="control-label col-sm-2" for="LocalTo">To</label>
<div class="col-sm-10">
<input type="datetime" class="form-control" id="LocalTo" name="LocalTo" value="@Model.LocalTo)" required>
</div>
</div>
<div class="form-group">
<div class="col-sm-offset-2 col-sm-10">
<button type="submit" class="btn btn-primary">Submit</button>
</div>
</div>
</form>
である必要があり必要なプロパティは論理的なものかここではありません。私は基本的に、Model.LocalFrom
がヌルの場合はblank
と表示され、Model.LocalFrom
がヌルでない場合は正しい値で表示され、入力の名前はLocalFrom
です。
問題
はその後ModelState.IsValid
は常にfalseを返すも、私たちに必要なすべての値が存在し、有効です。
LocalFrom
とLocalTo
をnullにできない場合は、ModelState
が有効になります。しかし、ビューで、私はビューにNULL値を渡すとにModelStateを正しく検証することができますどのように
のような時間の始まりの時間が表示されますか?
これらは、次のような場合に役立ちます。http://stackoverflow.com/a/39094061/2912943およびhttp://stackoverflow.com/questions/12048838/hiding-the-default-value-for-a-date –
@JeepGuillaume私は既にDateTimeプロパティをnullableにしています。しかし、問題はModelState.IsValidが常に偽であることです – Jaylen
私は別のリンクを追加するために私のコメントを編集しました。 –