2013-03-12 31 views
1

說明,請參閱ASP.NET MVC教程: http://www.asp.net/mvc/tutorials/getting-started-with-aspnet-mvc3/cs/examining-the-edit-methods-and-edit-view發動機罩下需要asp.net MVC教程

關於自動生成視圖\電影\ SearchIndex.cshtml

問題1:

<p> 
@Html.ActionLink("Create New", "Create") 

@using (Html.BeginForm()) 
{ 
    <p> 
     Genre: @Html.DropDownList("movieGenre", "All") 
     Title: @Html.TextBox("SearchString", "Movies", FormMethod.Get) 
     <input type="submit" value="Filter" /> 
    </p> 
} 
</p> 

movieGenre參考@ ViewBag.movi​​eGenre,這顯然是在Controllers/MoviesController.c中定義的小號

問題2:

@foreach (var item in Model) { 
<tr> 
    <td> 
     @Html.DisplayFor(modelItem => item.Title) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.ReleaseDate) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Genre) 
    </td> 
    <td> 
     @Html.DisplayFor(modelItem => item.Price) 
    </td> 
    <td> 
     @Html.ActionLink("Edit", "Edit", new { id=item.ID }) | 
     @Html.ActionLink("Details", "Details", new { id=item.ID }) | 
     @Html.ActionLink("Delete", "Delete", new { id=item.ID }) 
    </td> 
</tr> 
} 

其中modelItem定義? VS2010顯示我modelItem是

IEnumerable <MvcMovie.Model.Movie> 

謝謝。

+0

第二季度檢查[這裏](http://msdn.microsoft.com/en-us/library/bb397687.aspx) – 2013-03-12 11:59:58

+0

請問@ Html.DisplayFor(modelItem = > item.Title)意味着輸入是什麼(modelItem),它返回item.Title來顯示?那麼它是否和@ Html.DisplayFor(x => item.Title)一樣? – menrfa 2013-03-12 14:40:54

+0

yes modelItem是任何變量。你可以寫任何你想要的東西... – 2013-03-12 14:45:12

回答

1

看起來你已經回答了你的第二個問題,所以我就回答你的第一個:

Html.DropDownList助手將自己在默認情況下,如果沒有數據提供給它綁定到ViewDataViewBag只是ViewData字典的動態包裝,因此當您設置ViewBag.movieGenre = new SelectList()時,您正在有效設置ViewData["movieGenre"] = new SelectList()

既然你有這樣的SelectListViewData,下面將自動綁定這下拉:

@Html.DropDownList("movieGenre") 

這種隱式綁定也沒有很好的記錄。在這裏看到更多的信息:

http://weblogs.asp.net/pjohnson/archive/2012/10/26/mvc-s-html-dropdownlist-and-quot-there-is-no-viewdata-item-of-type-ienumerable-lt-selectlistitem-gt-that-has-the-key.aspx

+0

謝謝。益智解決了。只是想知道:其他Html Helpers是否有類似的數據綁定,即默認情況下綁定到ViewData?你能說出幾個嗎? – menrfa 2013-03-12 20:35:21

+0

我認爲這在HtmlHelpers中是非常標準的;例如我相信'@ Html.TextBox(「movieGenre」)'也會預先填充'ViewData [「movieGenre」]'(未經測試)。區別在於'@ Html.TextBox * *需要*某種形式的數據源供其選擇。 – 2013-03-13 18:49:35