2011-06-17 50 views
0

我有一個項目,我是誰遷移到MVC 3從2爲什麼這不在asp.net MVC 3中工作?

如果我寫了新鮮的MVC 3項目相同,他們很好地工作,但我移植的項目不能工作了這段代碼

<select id="selrecipetype"> 
          @foreach (custom.Type type in rectypes) 
          { 
           <option value="@(type.ID)">@(type.Type) 
           </option> 
          } 
         </select> 

Compiler Error Message: CS1525: Invalid expression term ';' 
Line 217:        <option value="@(type.ID)">@(type.Type) 
Line 218:        </option> 
Line 219:       } 
Line 220:      </select> 

所以在這段代碼中發生了什麼錯誤。

如果我寫這本同樣沒有奏效

@foreach(Categories.Article在 類別類別) {
  • @(category.Name)
  • }

    我想要知道爲什麼它不工作,我得到錯誤,當工作正常,如果我在新鮮的MVC 3項目

    +2

    使用'@ Html.DropDownListFor'輔助方法,而不是手工繪製下拉列表。 – Eranga 2011-06-17 09:48:37

    回答

    3

    呃,這樣的代碼不一定存在,所以爲什麼要關心它是否有效?更何況,這<select>沒有一個名稱的含義,除了使用JavaScript選定的值將永遠不會發布到服務器。因此,首先在IDE中選擇此代碼,然後按鍵盤上的Del.按鈕。

    正確的方式來產生下拉列表中的ASP.NET MVC使用Html.DropDownListFor幫手:

    @Html.DropDownListFor(
        x => x.SomePropertyOnYourViewModelToBindTheResultTo, 
        new SelectList(rectypes, "ID", "Type") 
    ) 
    

    ,或者如果你沒有一個強類型的視圖(當然你應該,但其誰知道):

    @Html.DropDownList(
        "SomeProperty", 
        new SelectList(rectypes, "ID", "Type"), 
    ) 
    
    +0

    爲什麼不工作在MVC 3項目的新副本中遷移相同的工作 – Adrian 2011-06-17 10:04:57

    +0

    @Steven Spielberg,根據您在問題中提供的詳細信息和代碼級別無法分辨出來。 – 2011-06-17 10:07:37

    0

    你應該真的使用HTML類來做你的選擇列表。你應該先在類似如下的控制器創建您的選擇列表:

    var types = typeRepo.GetRecTypes(); 
    ViewBag.SelectList = new SelectList(types, "KeyFieldName", "TitleFieldName"); 
    

    然後在您的視圖:

    @Html.DropDownList("SelectListName", (SelectList)ViewBag.SelectList) 
    
    相關問題