2013-07-02 24 views
0

我想通過一些屬性來查看,但我得到錯誤的視圖。 這裏是型號將屬性從控制器傳遞到視圖不工作?還是我通過錯誤的財產?

public class ModuleDetails { 
    public long Id { get; set; } 
    public string ModuleId { get; set; } 
    public string TypeName { get; set; } 
    public string KindName { get; set; } 
    public IEnumerable<Property> Properties { get; set; } 
} 

public class Property { 
    public string Name { get; set; } 
    public string Value { get; set; } 
} 

這是我在控制器所做的:

public ActionResult Details(long id) { 
    var ownerId = _dbSis.OwnedModules.Find(id); 
    var ownerName = _dbSis.Set<BusinessUnit>().Find(ownerId.ModuleOwnerId); 

    var module = (_dbSis.Modules.Select(m => new ModuleDetails { 
     Id = id, 
     ModuleId = m.ModuleId, 
     TypeName = m.ModuleType.TypeName, 
     KindName = m.ModuleType.ModuleKind.KindName, 
     Properties = m.PropertyConfiguration.PropertyInstances.Select(
     x => new Property {Name = x.Property.Name, Value = x.Value}) 
    })); 

    return View(module.FirstOrDefault());//am i doing something wrong here? 
} 

查看

@using BootstrapSupport 
@model AdminPortal.Areas.Hardware.Models.ModuleDetails 
@{ 
    ViewBag.Title = "Details"; 
    Layout = "~/Views/shared/_BootstrapLayout.basic.cshtml"; 
} 

<fieldset> 
    <legend>Module <small>Details</small></legend> 
    <dl class="dl-horizontal"> <!-- use this class on the dl if you want horizontal styling http://twitter.github.com/bootstrap/base-css.html#typography class="dl-horizontal"-->  

     <dt>ID</dt> 
     <dd>@Model.Id</dd> 

     <dt>Module ID</dt> 
     <dd>@Model.ModuleId</dd> 

     <dt>Module Type</dt> 
     <dd>@Model.TypeName</dd> 

     <dt>Module Kind</dt> 
     <dd>@Model.KindName</dd> 
     @foreach (var properties in Model.Properties) 
     { 
      <dt>Property Names</dt> 
      <dd>@properties.Name</dd> 
      <dt>Property Value</dt> 
      <dd>@properties.Value\</dd> 
     }  
    </dl> 
</fieldset> 
<p> 
    @Html.ActionLink("Edit", "Edit", Model.GetIdValue()) | 
    @Html.ActionLink("Back to List", "ModuleList") 
</p> 

現在,當我運行程序並設置中斷點我的控制器我得到這個 enter image description here

我可以看到有一些名稱和值屬性。 但在我看來,我總是得到第一個項目的細節,不管我選擇哪個項目,但是ID是我選擇的ID。 是不是因爲我在做

return View(module.FirstOrDefault()); 

我如何通過正確的項目和它的屬性,以查看?

回答

1

如果您想要顯示Id = some id的正確項目,則需要通過Id選擇記錄。在你的代碼,添加一個where子句您的LINQ選擇statment,也可能是......

var module = (SbSis.Modules.Where(t => t.ID == id).Select(.... 
0
如果你想根據 id你可以用這個過濾器返回元素

:也許module.FirstOrDefault(x=> x.Id == id)

0

.FirstOrDefault()方法的結果是默認的。這意味着你得到多個對象,但你的視圖有對象模型,而不是IEnumerable。請更換你的代碼從

return View(module.FirstOrDefault()); 

遵循測試 到

return View(module.First()); 

如果你不會得到在此之後一個錯誤,它意味着,我真的。

相關問題