我有两个问题: 1)我从数据库中获取记录列表,并在索引页面上显示为表格。但我收到此错误:Additional information: The argument 'path' cannot be null, empty or contain only white space.
这是我的控制者:
public ActionResult Index()
{
Records m = new Records();
var Records = db.Records .Include((m.Types).ToString());
return View(Records .ToList());
}
在我的模态中:
public partial class Records
{
public int ID { get; set; }
public Nullable<int> Types{ get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
2)我使用.edmx文件从数据库创建了我的模型,我想对上面的字段应用验证。我可以通过[required]public Nullable<int> Types{ get; set; }
等来做到这一点......但是如果我决定从我的数据库中更改任何内容然后对我的.edmx文件执行更新,那么所有[require]标签都将消失。我怎么解决这个问题呢
路由配置文件
public class RouteConfig
{
public static void RegisterRoutes(RouteCollection routes)
{
routes.IgnoreRoute("{resource}.axd/{*pathInfo}");
routes.MapRoute(
name: "Default",
url: "{controller}/{action}/{id}",
defaults: new { controller = "Home", action = "Index", id = UrlParameter.Optional }
);
}
}
答案 0 :(得分:0)
第一部分:在上面的评论中制定详细信息
就验证而言,建立通过MVC使用的单独模型并不通过数据库模型是一个好主意。很多时候它可能是一对一的,但有时它不是(保持安全的信息从错误的手中)。话虽如此,有像AutoMapper这样的库可以让这很容易(谢天谢地)。例如,给定您的模型:
public partial class Records
{
public int ID { get; set; }
public Nullable<int> Types{ get; set; }
public Nullable<System.DateTime> Date { get; set; }
}
您可以创建视图模型:
public class RecordsViewModel
{
[Required, HiddenInput]
public int ID { get; set; }
[Required, Range(1,100)]
public Nullable<int> Types{ get; set; }
[Required, DataType(DataTypes.DateTime)]
public Nullable<System.DateTime> Date { get; set; }
}
然后使用以下内容映射它们:
Records m = new Records();
var records = db.Records .Include((m.Types).ToString());
IList<RecordsViewModel> = Mapper.Map<IList<RecordsViewModel>>(records);
return View(RecordsViewModel);