移动到viewmodel时,客户端验证失败

时间:2011-07-07 22:04:14

标签: asp.net-mvc

这似乎是一个常见的问题,因为很多原因似乎似乎适用于这种情况。我使用ASP.NET MVC 2创建页面,我使用强类型视图来从DataEnities框架生成的类。

  <%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master"     Inherits="System.Web.Mvc.ViewPage<MVC_EDI.Models.wysCustomerEndPoint>"" %>

我制作了验证类,我将其绑定到数据类。

[MetadataType(typeof(EndPointValidation))]
public partial class wysCustomerEndPoint
{        
}

[Bind()]
public class EndPointValidation
{
    [Required(ErrorMessage = "Please enter the end point name")]
    public string CustName { get; set; }

我能够在我的创建页面上使用客户端验证。我需要在创建页面上添加一个下拉列表框,所以我将视图切换为使用viewmodel而不是我正在使用的数据类。

 public class CreateEditCustomerEndPointsViewModel
{
    public wysCustomerEndPoint CustomerEndPoint {get; set;}
    public List<SelectListItem> DefaultLocationList { get; set; } 
}

,这是使用新viewmodel的视图标题。

<%@ Page Title="" Language="C#" MasterPageFile="~/Views/Shared/Site.Master" Inherits="System.Web.Mvc.ViewPage<MVC_EDI.ViewModles.CreateEditCustomerEndPointsViewModel>" %>

但是现在当这个视图被加载时,我收到一个错误,我的formElement在尝试设置值时为null?我在这里错误地使用了MicrosofyMvcValidation.js文件并且formElement数组为null。

formElement['__MVC_FormValidation'] = this

我怀疑我需要将某种数据注释或属性添加到我的视图模型或类似的东西中。但我不确定在哪里?令人惊讶的是,它似乎在FireFox 5中运行得很好但在IE9中却是炸弹?

编辑:谢谢你的回复。是的我相信我在添加到ViewModel并使用Html.Helper对象之前实例化对象?这是代码。

 wysCustomerEndPoint ep = new wysCustomerEndPoint();
 ep.BuyerID = id;
 var viewModel = new CreateEditCustomerEndPointsViewModel()
 {
    CustomerEndPoint = ep
 };
 return View(viewModel);

并在视图中

<div class="editor-label">
    <%: Html.Label("Name") %>
</div>
<div class="editor-field">
    <%: Html.TextBoxFor(model => model.CustomerEndPoint.CustName) %>
    <%: Html.ValidationMessageFor(model => model.CustomerEndPoint.CustName) %>
</div>  

欢呼声

鲍勃

1 个答案:

答案 0 :(得分:0)

你可能正在这样做,但没有看到相关的代码,我不想假设。因此,请确保您实例化wysCustomerEndPoint对象并从Controller方法发送到您的视图。此外,您正在使用Html助手为您正在验证的输入元素。例如

Html.TextboxFor(model => model.wysCustomerEndPoint.CustName)