MVC错误路径不能为空

时间:2014-06-09 14:44:38

标签: asp.net-mvc model-view-controller

我有两个问题: 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 }
        );
    }
}

1 个答案:

答案 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);