我有一个视图,它必须将开始日期、结束日期和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唐突文件