gpt4 book ai didi

asp.net-mvc - 如何在 Asp .net MVC 中验证下拉列表

转载 作者:行者123 更新时间:2023-12-01 21:50:55 27 4
gpt4 key购买 nike

本月列表已添加到数据库中。对于添加工资(创建操作),我必须从下拉列表中选择月份类型,如果未选择月份,程序不应重定向到创建操作。在路由到创建操作之前如何验证下拉列表?

@using(Html.BeginForm("Create","Talab",FormMethod.Post))
{
<div class="row">
<div class="form-group">
<div class="col-md-2">
<a href="@Url.Action("Create","TotalSalary")" class="btn btn-success input-sm">Add New </a>
</div>
</div>
<div class="form-group">
<div class="col-md-2">
@Html.DropDownListFor(model => model.Month.id, (IEnumerable<SelectListItem>)ViewData["monthType"], "--Select a Month--")
@Html.ValidationMessageFor(model => model.Month.id)
</div>
</div>
</div>
}

我的 View 模型具有以下属性

public class Salary
{
public int id { get; set; }
public Nullable<int> month_id { get; set; }

[Required]
public virtual Month Month { get; set; }

public IEnumerable<Month> GetMonths()
{
IEnumerable<Month> mat = null;
mat = this.db.Months.ToList();
return mat;
}

}
Public Class Month
{
public int id { get; set; }
public string month { get; set; }
public virtual ICollection<Salary> Salary { get; set; }
}

我的 Controller 操作索引

public ActionResult Index()
{
Salary salary = new Salary();
ViewData["monthType"] = salary .GetMonths().ToList().Select(
s => new SelectListItem
{
Text = s.month,
Value = s.id.ToString()
});

return View(salary);
}

最佳答案

您的下拉列表应绑定(bind)到属性 month_id这是 Nullable<int> ,但你还没有用 [Required] 来装饰它属性。必须是

[Required(ErrorMessage="Please select a month")]
public Nullable<int> month_id { get; set; }

并在 View 中

@Html.DropDownListFor(m => m.month_id, ....)
@Html.ValidationMessageFor(m => m.month_id)

旁注:您声称您使用了 View 模型,但实际上您没有。您所展示的是一个数据模型。 View 模型仅包含与 View 相关的属性,并且不应包含访问数据库的方法。请参阅What is ViewModel in MVC?

您的情况下的 View 模型将是

public class SalaryViewModel
{
public int id { get; set; }
[Required(ErrorMessage="Please select a month")]
[Display(Name = "Month")] // for use in @Html.LabelFor()
public Nullable<int> month_id { get; set; }
public SelectList MonthList { get; set; } // or IEnumerable<SelectListItem> MonthList
}

在 Controller 中填充 MonthList 属性并在 View 中将其用作

@Html.DropDownListFor(m => m.month_id, Model.MonthList, "--Select a Month--")

关于asp.net-mvc - 如何在 Asp .net MVC 中验证下拉列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31895825/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com