2009-07-30 30 views
13

ASP.Net MVC Beta 5を使用していたサイトがあり、ASP.Net MVC 1.0にアップグレードしました。ドロップダウンリストで選択した項目に問題があります。ASP.Net Html.DropDownList選択された要素が選択されていません

フォローの人が同様の質問(Html.DropDownList in ASP.NET MVC RC (refresh) not pre-selecting item)が、私が持っている何の答えはありません(他のそれはバグかもしれないよりも)次のように

私のコントローラメソッドはなります

[AcceptVerbs(HttpVerbs.Get)] 
public ActionResult View(Guid id) 
{ 
    IntegrationLogic logic = new IntegrationLogic(new IntegrationLinq()); 
    CompanyLogic companyLogic = new CompanyLogic(new CompanyLinq()); 
    IntegrationContainer container = new IntegrationContainer(); 

    container.Sources = logic.GetImportSource(id); 
    container.Companies = companyLogic.GetCompanies(); // Returns a IList<company> 
    container.SourceActions = logic.GetAllSourceActions(); // Returns an IList<SourceAction> 
    container.SinkActions = logic.GetAllSinkActions(); 
    container.SuccessActions = logic.GetAllSuccessActions(); 
    container.FailureActions = logic.GetAllFailureActions(); 
    container.Actions = logic.GetAllActions(); 
    container.Watchers = logic.GetAllWatcherActions(); 
    container.ChainActions = logic.GetAllChainActions(); 

    return View("View", container); 
} 

ビューがあります次のように強く型付けされたモデルに対して

public partial class View : ViewPage<IntegrationContainer> {} 

ビューテンプレートの問題領域は、次のとおりです。

<label for="Companies">Company: </label><%=Html.DropDownList("Companies", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

私はドロップダウンリストを作成していますが、選択した項目は実際には選択されません。これが問題です。 "item.CompanyID"はGuid、 "id"はGuid、 "name"はViewData.Model.Companiesインスタンスに保持されているIListで提供される会社オブジェクトの文字列です。

これは実際にはバグですか?これはASP.Net MVCにまだ存在する理由を理解するのが難しいと思います...私がやったことがあれば、本当にうれしいでしょう。

いずれにしても、お勧めの回避策はありますか?

おかげ

答えて

21

それはHtml.DropDownListを経由して、あなたのコントロールの名前がコレクションオブジェクトと同じ名前であれば、それはASP.Net MVCの問題を引き起こすことが判明しました。

だから私は、次のコードを変更した場合:

<label for="Companies">Company: </label><%=Html.DropDownList("Companies", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

へ:

<label for="Companies">Company: </label><%=Html.DropDownList("company", 
               new SelectList(ViewData.Model.Companies, "id", "name", item.CompanyID))%> 

をすべて機能するようになりました。これはモデルのコレクションの名前がModel.Companies .... bonkersだったからです。コントロールの名前の大文字と小文字を「会社」から「会社」に変更するとどちらも機能しません私が思う)。

私はモデルを変更することができましたが、Linq-to-SQLを使用して構築されているので、Html要素の名前を変更する方が簡単だと思います。

+1

これで6つの質問を検索した後、これがうまくいった答えです...ありがとう! – Martin

+0

問題ありません。 :) – Kinlan

+0

この1つの壁に私の頭を叩いて、ありがとう。 – aboy021

関連する問題