我有一个视图,必须将开始日期,结束日期和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) {
我通过字符串传递了datetime,因此它可以采用空值。
如何连接参数以传递数据?无论我设置了什么,它总是传递null。但是,通过单击(Html.BeginForm(“ Index”)中的Index,可以将两者连接起来。
它不会引发任何错误,只是不会传递数据。
如您所知,我在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?
}
BookingCalculationController
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.validate.unobtrusive文件。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句