Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/330.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# @Html.ValidationFor()an@Html.EditorFor(x=>;x.Name,typeof(string.FullName)_C#_Html_Asp.net Mvc_Validation - Fatal编程技术网

C# @Html.ValidationFor()an@Html.EditorFor(x=>;x.Name,typeof(string.FullName)

C# @Html.ValidationFor()an@Html.EditorFor(x=>;x.Name,typeof(string.FullName),c#,html,asp.net-mvc,validation,C#,Html,Asp.net Mvc,Validation,提前感谢你的帮助 作为VS解决方案的一部分,我有一个摇摇晃晃的旧MVC客户机,我们称之为ApiClient(后端客户机)。根模型,我们称之为用户,具有所有验证需求和消息。但是,看看相关视图中的代码 查看 @using Cms.Utils @using Utils.Strings @using Utils.Web @using Utils.DateTimes @using System.Web.Mvc @using Models @model Cms.Models.Users.AddModel

提前感谢你的帮助

作为VS解决方案的一部分,我有一个摇摇晃晃的旧MVC客户机,我们称之为ApiClient(后端客户机)。根模型,我们称之为用户,具有所有验证需求和消息。但是,看看相关视图中的代码

查看

@using Cms.Utils
@using Utils.Strings
@using Utils.Web
@using Utils.DateTimes
@using System.Web.Mvc
@using Models
@model Cms.Models.Users.AddModel

@SectionBreadcrumb.Add(Html, "Manage Users", "Add")
<script src="~/Scripts/jquery.validate.min.js"></script>
<script src="~/Scripts/jquery.validate.unobtrusive.min.js"></script>

<div class="col-xs-12">
    <div class="row">
        <h2>
            Add Person
        </h2>
    </div>
    <form method="POST">
            <div class="row">
                @*@Html.LabelFor(x => x.User.Username, new { @class = "control-label col-md-2" })*@
                <div>
                    @Html.EditorFor(x => x.User.Username, typeof(string).FullName, new { @class = "form-control" })
                </div>
                <div class="row">
                    @Html.ValidationMessageFor(x => x.User.Username, "", new { @class = "text-danger" })
                </div>
            </div>
核心用户模型

namespace Cms.Models.Users
{
    public class AddModel
    {
        public User User { get; set; }
        public List<Role> Roles { get; set; }
    }
}
namespace Models
{
    public class User : CoreUser
    {
        public bool IsFollowing { get; set; }
        public bool IsFollowingMe { get; set; }
    }
}
namespace Sqor.Models
{
    public class CoreUser : IEntity, IAttributeContainer
    {
        public int Id { get; set; }
        [StringLength(256), RegularExpression(@"[^\s@]+@[^\s@]+\.[^\s@]+", ErrorMessage = "Invalid Email Address")]
        public string Email { get; set; }
        public string Phone { get; set; }
        public bool IsPhoneVerified { get; set; }
        [StringLength(20, ErrorMessage = "Usernames cannot exceed 20 characters."), RegularExpression("^[a-zA-Z](_[a-zA-Z0-9]|[a-zA-Z0-9])+$", ErrorMessage = "Letters, numbers, and underscores only. Start with a letter. No spaces. Max length of 20 characters.")]
        public string Username { get; set; }
        [MaxLength(200, ErrorMessage = "Snippet cannot exceed 200 characters.")]
        public string Snippet { get; set; }
        [MaxLength]
        public string Bio { get; set; }
        public bool IsTeam { get; set; }
        public bool IsAmbassador { get; set; }
        public DateTime Created { get; set; }
        public string TimeZone { get; set; }
        public int? ContractTypeId { get; set; }
        public bool IsMvp { get; set; }
        public string FacebookPageId { get; set; }
        public string TwitterHandle { get; set; }
        public string WikipediaUrl { get; set; }
        public int NumberOfPosts { get; set; }
        public string College { get; set; }
        public bool? AdFree { get; set; }
        public bool MarketingEmails { get; set; }

        [StringLength(45, ErrorMessage = "First names cannot exceed 45 characters.")]
        [Obsolete("Use FirstName property instead.")]
        public string Firstname { get; set; }
        [StringLength(45, ErrorMessage = "Last names cannot exceed 45 characters.")]
        [Obsolete("Use LastName property instead.")]
        public string Lastname { get; set; }

        /// <summary>
        /// Use this property moving forward.
        /// </summary>
        /// 
        [StringLength(45, ErrorMessage = "First names cannot exceed 45 characters.")]
        public string FirstName
        {
#pragma warning disable 618
            get { return this.Firstname; }
            set { this.Firstname = value; }
#pragma warning restore 618
        }
        /// <summary>
        /// Use this property moving forward.
        /// </summary>
        /// 
        [StringLength(45, ErrorMessage = "Last names cannot exceed 45 characters.")]
        public string LastName
        {
#pragma warning disable 618
            get { return this.Lastname; }
            set { this.Lastname = value; }
#pragma warning restore 618
        }

        [RegularExpression(@"^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1,2})?$", ErrorMessage = "Please use a valid date. MM/DD/YYYY")]
        public DateTime? BirthDate { get; set; }
        [StringLength(45, ErrorMessage = "Locations cannot exceed 45 characters.")]
        public string Location { get; set; }
        [StringLength(45, ErrorMessage = "Gender cannot exceed 45 characters.")]
        public string Gender { get; set; }
        public string Avatar { get; set; }
        public string ProfileHeader { get; set; }
        public bool IsPlayer { get; set; }
        public bool IsUser { get; set; }

        public List<PlayerLeague> Leagues { get; set; }

        public List<AthleteContract> Contracts { get; set; }

        public List<Organization> Organizations { get; set; }

        public int? AccountManagerId { get; set; }

        [JsonIgnore]
        public string FullName
        {
            get { return FirstName + " " + LastName; }
        }

        EntityType IEntity.Type
        {
            get { return EntityType.User; }
        }

        string IEntity.Name
        {
            get { return FullName; }
        }

        string IEntity.Team
        {
            get { return null; }
        }

        string IEntity.League
        {
            get { return null; }
        }

        int IEntity.LeaguePrecedence
        {
            get { return 0; }
        }

        string IEntity.JerseyNumber
        {
            get { return null; }
        }

        string IEntity.Position
        {
            get { return null; }
        }


        [JsonIgnore]
        public Dictionary<string, object> Attributes
        {
            get { return AttributeTokens != null ? AttributeTokens.ToDictionary(x => x.Key, x => x.Value == null ? null : x.Value.ToObject<object>()) : new Dictionary<string, object>(); }
            set { AttributeTokens = value.ToDictionary(x => x.Key, x => x.Value == null ? null : JToken.FromObject(x.Value)); }
        }

        [JsonExtensionData]
        public Dictionary<string, JToken> AttributeTokens { get; set; }

        [JsonIgnore]
        public IEnumerable<AttributeValue> AttributeValues
        {
            get { return Attributes.Select(x => new AttributeValue { Name = x.Key, Value = x.Value }); }
            set { Attributes = value.ToDictionary(x => x.Name, x => x.Value); }
        }

        public override string ToString()
        {
            return FullName + " (" + Id + ")";
        }
    }
}
名称空间Sqor.Models
{
公共类核心用户:IEntity,IAttributeContainer
{
公共int Id{get;set;}
[StringLength(256),正则表达式(@“[^\s@]+@[^\s@]+\.[^\s@]+”,ErrorMessage=“无效电子邮件地址”)]
公共字符串电子邮件{get;set;}
公用字符串电话{get;set;}
公共bool IsPhoneVerified{get;set;}
[StringLength(20,ErrorMessage=“用户名不能超过20个字符”)、RegularExpression(^[a-zA-Z]([a-zA-Z0-9]|[a-zA-Z0-9])+$”、ErrorMessage=“仅字母、数字和下划线。以字母开头。无空格。最大长度为20个字符。”)
公共字符串用户名{get;set;}
[MaxLength(200,ErrorMessage=“Snippet不能超过200个字符。”)]
公共字符串片段{get;set;}
[最大长度]
公共字符串Bio{get;set;}
公共bool IsTeam{get;set;}
公共布尔IsAmbassador{get;set;}
已创建公共日期时间{get;set;}
公共字符串时区{get;set;}
公共int?ContractTypeId{get;set;}
公共bool IsMvp{get;set;}
公共字符串FacebookPageId{get;set;}
公共字符串TwitterHandle{get;set;}
公共字符串WikipediaUrl{get;set;}
public int NumberOfPosts{get;set;}
公共字符串集合{get;set;}
公共bool?AdFree{get;set;}
公共布尔值{get;set;}
[StringLength(45,ErrorMessage=“名字不能超过45个字符。”)]
[过时(“改为使用FirstName属性”)]
公共字符串名{get;set;}
[StringLength(45,ErrorMessage=“姓氏不能超过45个字符。”)]
[过时(“改用LastName属性”)]
公共字符串Lastname{get;set;}
/// 
///继续使用此属性。
/// 
/// 
[StringLength(45,ErrorMessage=“名字不能超过45个字符。”)]
公共字符串名
{
#pragma警告禁用618
获取{返回this.Firstname;}
设置{this.Firstname=value;}
#pragma警告恢复618
}
/// 
///继续使用此属性。
/// 
/// 
[StringLength(45,ErrorMessage=“姓氏不能超过45个字符。”)]
公共字符串姓氏
{
#pragma警告禁用618
获取{返回this.Lastname;}
设置{this.Lastname=value;}
#pragma警告恢复618
}
[RegularExpression(@“^([0]\d|[1][0-2])\/([0-2]\d|[3][0-1])\/([2][01]|[1][6-9])\d{2}(\s([0-1]\d|[2][0-3])(\:[0-5]\d){1,2})$”,ErrorMessage请使用有效日期。MM/DD yyyyy)]
公共日期时间?生日{get;set;}
[StringLength(45,ErrorMessage=“位置不能超过45个字符。”)]
公共字符串位置{get;set;}
[StringLength(45,ErrorMessage=“性别不能超过45个字符)。]
公共字符串{get;set;}
公共字符串Avatar{get;set;}
公共字符串ProfileHeader{get;set;}
公共bool IsPlayer{get;set;}
公共bool IsUser{get;set;}
公共列表联盟{get;set;}
公开名单
@4242

更新-userscocontroller.cs

[Route("person/add"), HttpPost]
public new async Task<ActionResult> Add(string email,  string username, string firstName, string lastName, string snippet, string bio, bool isAmbassador = false, bool isTeam = false, Gender gender = Gender.None, string location = null, DateTime? birthdate = null, 
    string twitterHandle = null, string facebookPageId = null, string wikipediaUrl = null, bool marketingEmails = false, string[] roles = null)
[路线(“人员/添加”),HttpPost]
public new async Task Add(字符串email、字符串username、字符串firstName、字符串lastName、字符串snippet、字符串bio、bool isAmbassador=false、bool isTeam=false、Gender-Gender=Gender.None、字符串location=null、DateTime?birthdate=null、,
string twitterHandle=null,string facebookPageId=null,string wikipediaUrl=null,bool marketingEmails=false,string[]roles=null)
  • typeof(string).FullName指示MVC使用名为System.string.cshtml的编辑器模板

  • 可能,见下文

  • 是的,请参见下文,具体取决于2。这可能会或可能不会修复您的模型绑定

  • 解决方案3 请尝试在System.String.cshtml中使用此选项,如果我没有记错的话,它应该呈现相同的html样式和格式,并内置对正在使用的验证属性的支持

    <div class="row">
        @Html.LabelFor(model => model , new { @class = "col-xs-2" })
        @Html.TextBoxFor(model => model , new { @class = "col-xs-10" })
    </div>
    
  • typeof(string).FullName指示MVC使用名为System.string.cshtml的编辑器模板

  • 可能,见下文

  • 是的,请参见下文,具体取决于2。这可能会或可能不会修复您的模型绑定

  • 解决方案3 请尝试在System.String.cshtml中使用此选项,如果我没有记错的话,它应该呈现相同的html样式和格式,并内置对正在使用的验证属性的支持

    <div class="row">
        @Html.LabelFor(model => model , new { @class = "col-xs-2" })
        @Html.TextBoxFor(model => model , new { @class = "col-xs-10" })
    </div>
    

    我认为这是用户名(模型)类型的…(模板类型)(即system.string)您能为我们提供模型吗?完成了,您的@Noutchns2是什么意思?请尝试输入
    [必需]
    CoreUser
    model中的
    UserName
    overtop我已经使用正则表达式处理了用户名及其错误。它不是必填字段。我认为它是用户名(model)类型的…(模板类型)(即system.string)您能为我们提供模型吗?完成了@noctens2是什么意思?请尝试输入
    [Required]
    overtop of
    UserName
    CoreUser
    模型中,我已经使用RegularExpression处理了用户名及其错误。这不是必填字段。感谢man,#3的解决方案-确实完成了客户端验证工作,但随后是(字符串)的类型。全名编辑器发送了空信息(我将尝试它和您的组合)
                <div>
                    @Html.EditorFor(x => x.User.Username, typeof(string).FullName, "Username", new { @class = "form-control" })
                </div>
                <div class="row">
                    @Html.ValidationMessageFor(x => x.User.Username, "", new { @class = "text-danger" })
                </div>
    
    public ActionResult Edit(User User){
    }