- c - 在位数组中找到第一个零
- linux - Unix 显示有关匹配两种模式之一的文件的信息
- 正则表达式替换多个文件
- linux - 隐藏来自 xtrace 的命令
我在 ASP.NET MVC cshtml 页面中有以下 DropDownList:
@Html.DropDownListFor(model => model.GroupId, (IEnumerable<SelectListItem>)ViewBag.PossibleGroups, "")
该属性定义为 public virtual Nullable<int> GroupId
尽管GroupId
是Nullable
select
菜单不接受空选项。如果我尝试在不选择组的情况下保存模型,我会收到以下错误消息:
The field
GroupId
must be a number.
选择菜单呈现如下:
<select data-val="true" data-val-number="The field GroupId must be a number." id="GroupId" name="GroupId" class="input-validation-error" data-hasqtip="0" aria-describedby="qtip-0">
<option value=""></option>
<option value="1">Test Group</option>
</select>
不,GroupId
没有装饰 [Required]
属性。
我怎样才能使页面接受 GroupId
的空值? ?
附言GroupId
类型 ( Nullable<int>
) 是代码生成的。我使用数据库优先方案。我不知道 <Nullable>int
之间有什么区别和 int
?
更新:
即使空选择项的值为零也无法通过非干扰性 (JavaScript) 验证。但是,将值 -1
通过客户端和服务器端验证。所以现在,我使用这个值并在 Controller 中设置 GroupId
至 null
如果等于 -1
.
我不敢相信对于这样一个简单的问题没有更简单的解决方案。这是 ASP.NET MVC 3 中的错误吗?
最佳答案
为模型绑定(bind)创建类
public class BindDropDown
{
public Nullable<int> ID{ get; set; }
[Required(ErrorMessage = "Enter name")]
public string Name{ get; set; }
}
Create Controller
namespace DropDown.Controllers
{
public class HomeController : Controller
{
public ActionResult Index()
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
ViewBag.InterviewList = NumberList;
return View(new BindDropDown());
}
[HttpPost]
public ActionResult Index(BindDropDown d)
{
if (ModelState.IsValid)
{
ViewBag.Message = "Welcome to ASP.NET MVC!";
}
else
{
ViewBag.Message = "error";
}
ViewBag.NumberList = NumberList;
return View(new BindDropDown());
}
public ActionResult About()
{
return View();
}
public static IEnumerable<SelectListItem> NumberList
{
get
{
IEnumerable<NumberClass> interviewAppeals = Enum.GetValues(typeof(NumberClass))
.Cast<NumberClass>();
return from item in interviewAppeals
select new SelectListItem
{
Text = item.ToString(),
Value = ((int)item).ToString()
};
}
}
}
public enum NumberClass
{
One = 1,
Two = 2,
Three = 3
}
}
Index.cshtml
@using DropDown.Models
@model BindDropDown
@{
ViewBag.Title = "Home Page";
}
<h2>@ViewBag.Message</h2>
<p>
</p>
@using (Html.BeginForm("Index", "Home", FormMethod.Post, new { id = "frmOnline" }))
{
@Html.ValidationSummary(false)
<div class="w100">
<div class="fleft">
<label>ID :</label>
</div>
<div class="fleft">
@Html.DropDownListFor(model => model.ID, (IEnumerable<SelectListItem>)ViewBag.NumberList, "")
</div>
</div>
<div class="w100">
<div class="fleft">
<label>Name :</label>
</div>
<div class="fleft">
@Html.TextBoxFor(model => model.Name)
@Html.ValidationMessageFor(model => model.Name)
</div>
</div>
<div class="w100 clear">
<label> </label>
<div class="fleft">
<input type="submit" value="Save" class="button green" />
@Html.ActionLink("Back", "GetAllAction", null, new { @class = "button gray" })
</div>
</div>
}
关于c# - 如何使绑定(bind)到 Nullable<int> 属性的 DropDownListFor 接受空值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22183361/
你能比较一下属性吗 我想禁用文本框“txtName”。有两种方式 使用javascript,txtName.disabled = true 使用 ASP.NET, 哪种方法更好,为什么? 最佳答案 我
Count 属性 返回一个集合或 Dictionary 对象包含的项目数。只读。 object.Count object 可以是“应用于”列表中列出的任何集合或对
CompareMode 属性 设置并返回在 Dictionary 对象中比较字符串关键字的比较模式。 object.CompareMode[ = compare] 参数
Column 属性 只读属性,返回 TextStream 文件中当前字符位置的列号。 object.Column object 通常是 TextStream 对象的名称。
AvailableSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。 object.AvailableSpace object 应为 Drive 
Attributes 属性 设置或返回文件或文件夹的属性。可读写或只读(与属性有关)。 object.Attributes [= newattributes] 参数 object
AtEndOfStream 属性 如果文件指针位于 TextStream 文件末,则返回 True;否则如果不为只读则返回 False。 object.A
AtEndOfLine 属性 TextStream 文件中,如果文件指针指向行末标记,就返回 True;否则如果不是只读则返回 False。 object.AtEn
RootFolder 属性 返回一个 Folder 对象,表示指定驱动器的根文件夹。只读。 object.RootFolder object 应为 Dr
Path 属性 返回指定文件、文件夹或驱动器的路径。 object.Path object 应为 File、Folder 或 Drive 对象的名称。 说明 对于驱动器,路径不包含根目录。
ParentFolder 属性 返回指定文件或文件夹的父文件夹。只读。 object.ParentFolder object 应为 File 或 Folder 对象的名称。 说明 以下代码
Name 属性 设置或返回指定的文件或文件夹的名称。可读写。 object.Name [= newname] 参数 object 必选项。应为 File 或&
Line 属性 只读属性,返回 TextStream 文件中的当前行号。 object.Line object 通常是 TextStream 对象的名称。 说明 文件刚
Key 属性 在 Dictionary 对象中设置 key。 object.Key(key) = newkey 参数 object 必选项。通常是 Dictionary 
Item 属性 设置或返回 Dictionary 对象中指定的 key 对应的 item,或返回集合中基于指定的 key 的&
IsRootFolder 属性 如果指定的文件夹是根文件夹,返回 True;否则返回 False。 object.IsRootFolder object 应为&n
IsReady 属性 如果指定的驱动器就绪,返回 True;否则返回 False。 object.IsReady object 应为 Drive&nbs
FreeSpace 属性 返回指定的驱动器或网络共享对于用户的可用空间大小。只读。 object.FreeSpace object 应为 Drive 对象的名称。
FileSystem 属性 返回指定的驱动器使用的文件系统的类型。 object.FileSystem object 应为 Drive 对象的名称。 说明 可
Files 属性 返回由指定文件夹中所有 File 对象(包括隐藏文件和系统文件)组成的 Files 集合。 object.Files object&n
我是一名优秀的程序员,十分优秀!