2010-04-22 161 views
1

我有一個看起來像這樣的視圖模型:ASP.Net MVC 2 DropDownListFor在EditorTemplate

namespace AutoForm.Models 
{ 
    public class ProductViewModel 
    { 
     [UIHint("DropDownList")] 
     public String Category { get; set; } 

     [ScaffoldColumn(false)] 
     public IEnumerable<SelectListItem> CategoryList { get; set; } 

     ... 
    } 
} 

它有類別和所屬分類屬性。 CategoryList是類別下拉UI元素的源數據。

我有一個看起來像這樣的EditorTemplate:

<%@ Control Language="C#" Inherits="System.Web.Mvc.ViewUserControl<ProductViewModel>" %> 
<%@ Import Namespace="AutoForm.Models"%> 

<%=Html.DropDownListFor(m => m.Category , Model.CategoryList) %> 

注:本EditorTemplate是強類型到ProductViewModel

我的控制器被填充所屬分類屬性與數據庫中的數據。

我無法使DropDownListFor模板呈現含有CategoryList數據的下拉列表。我知道CategoryList正在使用控制器中的數據填充,因爲我在調試和瀏覽控制器時看到了數據。

這裏是在瀏覽器中我的錯誤信息:

Server Error in '/' Application. Object reference not set to an instance of an object. Description: An unhandled exception occurred during the execution of the current web request. Please review the stack trace for more information about the error and where it originated in the code.

Exception Details: System.NullReferenceException: Object reference not set to an instance of an object.

Source Error:

Line 2: <%@ Import Namespace="AutoForm.Models"%> Line 3: Line 4: <%=Html.DropDownListFor(m => m.Category, Model.CategoryList) %>

Source File: c:\ProjectStore\AutoForm\AutoForm\Views\Shared\EditorTemplates\DropDownList.ascx Line: 4

任何想法?

感謝

湯姆


作爲後續,我注意到ViewData.Model爲空當我踩着穿過EditorTemplate代碼。我將EditorTemplate強類型爲「ProductViewModel」,它也是傳遞給控制器​​中視圖的類型。我感到困惑,爲什麼ViewData.Model爲null,即使它在傳遞到視圖之前在控制器中被填充。

+0

如果你將它釘在一個你認爲在控制器中填充的空模型上,發佈控制器代碼將允許人們幫助你確定原因。 – patridge 2010-06-02 17:57:26

+0

您認爲應該最終調用編輯器模板的用法是什麼? – 2010-07-15 22:01:14

回答

0
<%=Html.DropDownListFor(m => m.Category , Model.CategoryList) %> 

如果您的模型爲null,那麼對Model.CategoryList的調用將不起作用。您可以改用靜態函數。

相關問題