我在使用mvc2时遇到了麻烦。
我使用实体框架作为我的ORM。我使用POCO实体生成器来创建POCO对象。我将生成的对象移动到一个单独的项目中。我按照此处列出的步骤(Tutorial)。这是我的项目结构
Sports.Data - 实体Frmework和数据访问
Sports.Entities - 生成的poco对象和好友类
Sports.Web - 网络应用程序
在Sports.Entities项目中,我为生成的pocos创建了好友类。
我遇到的问题是mvc忽略了这些属性。验证不起作用,并且未显示正确的标签文本。而不是'衬衫尺寸',显示'ShirtSize'。
我做错了什么?
感谢您的帮助。
这是代码。
<div>
<%: Html.LabelFor(m => m.Player.ShirtSize)%>
</div>
<div class="editor-field">
<%: Html.EditorFor(m => m.Player.ShirtSize) %>
<%: Html.ValidationMessageFor(m => m.Player.ShirtSize)%>
<div>
namespace Sports.Entities
{
[MetadataType(typeof(PlayerMetadata))]
public partial class Player
{
public double PointsPerGame {
get { return (double) this.Points / this.MatchesPlayed; }
}
}
public class PlayerMetadata
{
[Required(AllowEmptyStrings = false, ErrorMessage = "First Name is required.")]
[StringLength(50, ErrorMessage = "First Name must be 50 characters or less")]
[DataType(DataType.Text)]
object FirstName { get; set; }
[Required(AllowEmptyStrings = false, ErrorMessage = "Last Name is required.")]
[StringLength(50, ErrorMessage = "First Name must be 50 characters or less")]
[DataType(DataType.Text)]
object LastName { get; set; }
[Required(ErrorMessage = "Shirt Size is required.")]
[EnumDataType(typeof(ShirtSizeEnum), ErrorMessage = "Shirt Size is invalid.")]
[DisplayName("Shirt Size")]
object ShirtSize { get; set; }
[Required(ErrorMessage = "Gender is required.")]
[EnumDataType(typeof(GenderEnum) , ErrorMessage = "Gender is invalid.")]
object Gender { get; set; }
[Required(AllowEmptyStrings = false , ErrorMessage = "Date of birth is required.")]
[DataType(DataType.Date)]
object DateOfBirth { get; set; }
}
}
答案 0 :(得分:1)
感谢您的回答。我解决了这个问题。好友类中的属性需要公开。在我公开财产后,一切都开始了。
public object ShirtSize { get; set; }
答案 1 :(得分:0)
嗯,你发布的代码看起来很稳固。您的视图是否是强类型并继承了相应的类?
Inherits="System.Web.Mvc.ViewPage(Of YourWebApp.Sports.Entities.Player)
另外,这可能听起来像一个愚蠢的问题,但是当你第一次填充视图和发回它时,你是否将填充的Player
对象传递回视图?最后你确定要检查
if ModelState.IsValid?