【发布时间】:2011-10-04 10:21:57
【问题描述】:
我已经创建了带有验证的视图模型,但是当我提交表单时验证不起作用,下面是代码:
namespace Products.Models
{
[MetadataType(typeof(SampleFormViewModelMetaData))]
public partial class SampleFormViewModel
{
public SampleFormViewModel() { }
public Venue venues { get; set; }
public Accomodation accomodation { get; set; }
}
public class SampleFormViewModelMetaData
{
[Required(ErrorMessage = "*")]
public object ProductName { get; set; }
[Required(ErrorMessage = "*")]
public object ProductDescription { get; set; }
[Required(ErrorMessage = "*")]
public object ProductWebsite { get; set; }
[Required(ErrorMessage = "Tel required")]
[DisplayFormat(ConvertEmptyStringToNull = false)]
public object ProductTel { get; set; }
}
}
查看
<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/ApexAdmin.Master" Inherits="System.Web.Mvc.ViewPage<ApexTrackDays.Models.SampleFormViewModel>" %>
<div class="editor-label">
<%: Html.LabelFor(model => model.accomodation.ProductName)%>
</div>
</td>
<td>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.accomodation.ProductName, new { style = "width:300px;" })%>
<%: Html.ValidationMessageFor(model => model.accomodation.ProductName)%>
</div>
</td>
</tr>
<tr><td colspan="2">
<div class="editor-label">
<%: Html.LabelFor(model => model.accomodation.ProductDescription)%>
</div>
</td>
</tr><tr><td colspan="2">
<div class="editor-field">
<%: Html.TextAreaFor(model => model.accomodation.ProductDescription, new { @class = "tinymce" })%>
<%: Html.ValidationMessageFor(model => model.accomodation.ProductDescription)%>
</div>
</td></tr>
<tr><td>
<div class="editor-label">
<%: Html.LabelFor(model => model.accomodation.ProductWebsite)%>
</div>
</td><td>
<div class="editor-field">
<%: Html.TextBoxFor(model => model.accomodation.ProductWebsite, new { style = "width:300px;" })%>
<%: Html.ValidationMessageFor(model => model.accomodation.ProductWebsite)%>
</div>
</td></tr> </table>
控制器
[HttpPost]
public ActionResult Create(FormCollection formValues)
{
// ApextrackdaysEntities entity = new ApextrackdaysEntities();
IAccomodationTypeRepository AccomodationResp = new AccomodationTypeRepository();
ITrackRepository trackResp = new TrackRepository();
IQueryable<Object> tracks = trackResp.GetVenuesSelectlist();
ViewData["Venue"] = new SelectList(tracks, "VenueID", "Name");
Accomodation accomodation = new Accomodation();
if (TryUpdateModel(accomodation))
{
accomodation.DateAdded = DateTime.Now;
accomodation.DateModified = DateTime.Now;
accomResp.Add(accomodation);
accomResp.Save();
int AccomodationID = accomodation.ID;
int VenueID = Convert.ToInt16(formValues["Venue"]);
AccomodationType type = new AccomodationType();
type.AccomodationID = AccomodationID;
type.TrackID = VenueID;
AccomodationResp.Add(type);
AccomodationResp.Save();
return RedirectToAction("Index", new { id = accomodation.ID });
}
return View(accomodation);
}
【问题讨论】:
-
您接受回发的控制器操作是什么样的?
-
返回模型有效,表示验证未完成
-
我添加了后置控制器
标签: asp.net-mvc asp.net-mvc-2 validation viewmodel data-annotations