asp.net-mvc - @Html.EditorFor(model => model.Username) 不显示文本框
问题描述
我是 ASP.NET MVC 的新手并正在学习它。我正在使用 Asp.Net MVC 实体框架。在我称为“注册”的视图中,我正在编写以下代码
<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>
这是 RegistrationModel.cs
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);
}
}
}
User_reg.cs
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; }
}
}
我收到一个非常奇怪的错误,其中没有显示用户名的文本框,但显示了所有其他文本框。我错过了什么吗?请帮忙。
解决方案
从你User_reg
定义你的Username
as byte[]
,这就是为什么EditorFor
不显示文本框,因为默认情况下,它不知道要显示什么byte[]
。
你有两个选择:
- 更改
byte[]
为类似string
(奇怪的是用户名是 byte[] 无论如何) - 如果
byte[]
是你想要的,那么为字节创建一个 EditorTemplate (在网上有很多关于这个的信息,比如这个)或者使用类似TextboxFor
which explicit 指定你想要输出的东西
推荐阅读
- mapbox-gl-js - 使用 mapbox-gl-js 无法正确显示填充挤出
- ios - Fabric 没有向我的仪表板发送数据
- unity3d - Unity - GetKeyDown 和 GetKey 使用相同的 KeyCode 来获得输入延迟(如果按住)
- ios - 在 iOS 中使用相机时获取运动传感器数据
- ssl - 如何使用 Jenkins Artifactory 插件避免柯南 SSL 用户身份验证错误?
- java - java.io.IOException: COSStream 已关闭,无法读取。也许其封闭的 PDDocument 已关闭?
- c# - Dijkstra 算法:如果有 2 个图未连接,它应该工作吗?
- javascript - 使用 Flow 验证对象映射
- ios - “因特征而异”的错误
- swift - 如何以编程方式在 Firebase 中创建动态链接?迅速