如何在MVC 5中将多个jquery日期选择器参数从视图传递到控制器



我有一个视图,它必须将开始日期、结束日期和guestnumbers int传递给控制器。

视图是这样的,去掉了格式。。。。

    @using (Html.BeginForm("Index", "BookingCalculation", new { BookingFrom = "BookingFrom", BookingTo = "BookingTo", GuestNumbers = "GuestNumbers" },FormMethod.Post)) 
    {
           @Html.JQueryUI().Datepicker("BookingFrom").DefaultDate(DateTime.Today).MinDate(DateTime.Today)
   @Html.JQueryUI().Datepicker("BookingTo").DefaultDate(DateTime.Today).NumberOfMonths(2) 
   @Html.TextArea("GuestNumbers","2") 
    <input type ="submit" value ="submit" />
        }

控制器是。。。。

 public ActionResult Index(string BookingFrom, string BookingTo, int? GuestNumbers) {

我将日期时间作为字符串传递,这样它就可以接受null值。

如何连接参数以传递数据?不管我设置了什么,它总是通过null。然而,点击(Html.BeginForm)中的索引("索引"将带我进入方法.

它不会抛出任何错误,只是不会传递数据。

正如你所知,我是ASP.net的一个小人物。:-)

首先,您应该创建一个表示要编辑的数据的视图模型,并让MVC负责绑定

public class BookingVM
{
  public DateTime? BookingFrom { get; set; }
  public DateTime? BookingTo { get; set; }
  [Display(Name="Please enter number of guests")]
  [Range(1, 10)] // optional validation
  public int? GuestNumbers { get; set; } // not sure why you would want this to be nullable?
}

预订计算控制器

public ActionResult Create()
{
  BookingVM model = new BookingVM();
  // You can set default properties here (e.g. model.GuestNumbers = 2;)
  return View(model);
}
[HttpPost]
[ValidateAntiForgeryToken]
public ActionResult Create(BookingVM model)
{
  if(!ModelState.IsValid)
  {
    // return the view to correct validation errors
    return View(model);
  }
  // its valid so save values and redirect somewhere
  return RedirectToAction("...");
}

查看

@model BookingVM
@using (Html.BeginForm())
{
  @Html.AntiForgeryToken()
  @Html.ValidationSummary(true)
  @Html.JQueryUI().Datepicker(m => m.BookingFrom)
  @Html.JQueryUI().Datepicker(m => m.BookingFrom)
  @LabelFor(m => m.GuestNumbers)
  @Html.TextBoxFor(m => m.GuestNumbers)
  @Html.ValidationMessageFor(m => m.GuestNumbers)
  <input type ="submit" value ="submit" />
}

如果您想要客户端验证,请不要忘记包含jquery、jquery.validate和jquery.vvalidate.uno唐突文件

最新更新