0
我想以正確的方式使用Linq和強類型視圖。在現階段,我做到以下幾點:如何使用Linq對象驗證MVC中的視圖2
做一個模型來驗證agianst:
public class Menu
{
public int Id { get; private set; }
public string Text { get; private set; }
public string Action { get; private set; }
public string Controller { get; private set; }
public string Parameter { get; private set; }
public string Langue { get; private set; }
public Menu(int id, string controller, string action, string parameter, string text)
{
Id = id;
Controller = controller;
Action = action;
Text = text;
Parameter = parameter;
}
使用LINQ從數據庫中獲取數據到模型:
public static List<Menu> GetTabListForMenu(string langue)
{
Page_dbEntities entity = new Page_dbEntities();
var tabList = (from ml in entity.wpmenulangue
where ml.Langue == langue
from m in entity.wpmenu
where ml.Menu == m.Id
from l in entity.wplangue
where ml.Langue == l.Langue
from p in entity.wppage
where p.Id == m.Page
select new { m.Id, p.Controller, p.Action, p.Parameter, ml.Text}).ToList();
List<Menu> menu = new List<Menu>();
foreach (var item in tabList)
{
menu.Add(new Menu(item.Id, item.Controller, item.Action, item.Parameter, item.Text));
}
return menu;
}
我非常相信,這是不這樣做,有2個問題的最佳途徑:
當我從我第一次使用VAR,然後有將其移動到在foreach對象數據庫中的數據。這似乎是浪費我的時間和更少的有效性,然後用sql來獲取它。
有人告訴我,我可以只驗證了agianst的entitymodel。即使我在視圖中使用多個實體。這是真的? (一個人告訴我這不能讓它工作,我一直沒能在網上找到任何有關它的東西)。
我會盡量在接下來的幾個小時回顧這篇文章,但可能需要等待24小時。
已經試過了;)它提供了以下錯誤: 只有參數構造函數初始化和LINQ中支持到實體。 THX的鏈接DataAnnotations雖然,我還需要就如何使probber驗證:) – Jorn 2010-07-23 07:54:46
您需要爲您的視圖模型默認的構造函數讀取了。在你的情況下,Menu類構造函數帶參數。您將需要刪除此構造函數並使用C#3.0類初始化器語法初始化類。 – 2010-07-23 08:00:43
謝謝,這解決了我的問題:) – Jorn 2010-07-23 09:42:16