Asp.net mvc @Html.EditorFor(model=>;model.Username)不显示文本框
我是ASP.NETMVC新手,正在学习它。我使用的是Asp.NETMVC实体框架。在我看来,我称之为“寄存器”,我正在编写以下代码Asp.net mvc @Html.EditorFor(model=>;model.Username)不显示文本框,asp.net-mvc,entity-framework,Asp.net Mvc,Entity Framework,我是ASP.NETMVC新手,正在学习它。我使用的是Asp.NETMVC实体框架。在我看来,我称之为“寄存器”,我正在编写以下代码 <div id="Reg_div"> @using (Html.BeginForm("RegisterUser", "Register", FormMethod.Post)) { <table> <tr> <td>
<div id="Reg_div">
@using (Html.BeginForm("RegisterUser", "Register", FormMethod.Post))
{
<table>
<tr>
<td>
@Html.LabelFor(model => model.Username)
</td>
<td>
@Html.EditorFor(model => model.Username)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.Password)
</td>
<td>
@Html.EditorFor(model => model.Password)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.FName)
</td>
<td>
@Html.EditorFor(model => model.FName)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.LName)
</td>
<td>
@Html.EditorFor(model => model.LName)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.Address)
</td>
<td>
@Html.EditorFor(model => model.Address)
</td>
</tr>
<tr>
<td>
@Html.LabelFor(model => model.Email)
</td>
<td>
@Html.EditorFor(model => model.Email)
</td>
</tr>
<tr>
<td>
<input type="submit" name="name" value="Register" />
</td>
</tr>
</table>
}
</div>
}
我得到了一个非常奇怪的错误,用户名的文本框没有显示,但显示了所有其他文本框。我错过什么了吗?请帮助。从您的
用户\u reg
将您的用户名定义为字节[]
,这就是为什么EditorFor
没有显示文本框的原因,
因为默认情况下,它不知道为字节[]
显示什么
您有两个选择:
从byte[]
更改为类似string
(用户名竟然是byte[]真奇怪)
如果byte[]
是您想要的,那么创建一个EditorTemplate
对于byte(在web上有很多关于它的信息)
或者使用类似于TextboxFor
的东西,明确指定要输出的内容
从您的User\u reg
将您的用户名定义为byte[]
,这就是为什么EditorFor
没有显示文本框的原因,
因为默认情况下,它不知道为字节[]
显示什么
您有两个选择:
从byte[]
更改为类似string
(用户名竟然是byte[]真奇怪)
如果byte[]
是您想要的,那么创建一个EditorTemplate
对于byte(在web上有很多关于它的信息)
或者使用类似于TextboxFor
的东西,明确指定要输出的内容
你能发布你的实体吗?@PM。我可以看到用户名没有ModelBuilder.Entity。但我不知道为什么。“用户注册”的结构如何?你能发布那个班级代码吗?@PM。是因为字节返回类型吗?如果是,那么为什么只有那个字段是byte呢?事实上,我在数据库中检查了Username的数据类型是varbinary。我将把它改为Varchar;)你能发布你的实体吗?@PM。我可以看到用户名没有ModelBuilder.Entity。但我不知道为什么。“用户注册”的结构如何?你能发布那个班级代码吗?@PM。是因为字节返回类型吗?如果是,那么为什么只有那个字段是byte呢?事实上,我在数据库中检查了Username的数据类型是varbinary。我将把它改为Varchar;)
namespace PTMatrix.Models
{
using System;
using System.Data.Entity;
using System.ComponentModel.DataAnnotations.Schema;
using System.Linq;
public partial class RegistrationModel : DbContext
{
public RegistrationModel()
: base("name=RegistrationModel")
{
}
public virtual DbSet<User_reg> User_reg { get; set; }
protected override void OnModelCreating(DbModelBuilder modelBuilder)
{
modelBuilder.Entity<User_reg>()
.Property(e => e.LName)
.IsUnicode(false);
modelBuilder.Entity<User_reg>()
.Property(e => e.FName)
.IsUnicode(false);
modelBuilder.Entity<User_reg>()
.Property(e => e.Password)
.IsUnicode(false);
modelBuilder.Entity<User_reg>()
.Property(e => e.Address)
.IsUnicode(false);
modelBuilder.Entity<User_reg>()
.Property(e => e.Email)
.IsUnicode(false);
modelBuilder.Entity<User_reg>()
.Property(e => e.Phone)
.IsUnicode(false);
}
}
namespace PTMatrix.Models
{
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;
using System.Data.Entity.Spatial;
public partial class User_reg
{
[Key]
public int Uid { get; set; }
[StringLength(50)]
public string LName { get; set; }
[StringLength(50)]
public string FName { get; set; }
[MaxLength(50)]
public byte[] Username { get; set; }
[StringLength(50)]
public string Password { get; set; }
[StringLength(50)]
public string Address { get; set; }
[StringLength(50)]
public string Email { get; set; }
[StringLength(50)]
public string Phone { get; set; }
}