組織のリスト(CalledOrganizationSelectList)があり、そのうちの1つが呼び出されています(CalledOrganizationId)。 ViewModelで両方を設定しましたが、MVC/Razorがドロップダウンを正しく表示しません(つまり、ドロップダウンの正しい項目に対してselected = "selected"属性を設定しません)。ASP .Net MVC 3 Html.DropDownが変数にバインドされていません
さらに意味のない回避策があります。私は新しいメンバをViewModelに追加し、そのドロップダウンをバインドしました。これは正常に動作します。ちょうど今、それは動作を停止していますいつまで...私のコントローラで
public class CallViewModel{
public int? CalledOrganizationId { get; set; }
public SelectList CalledOrganizationSelectList { get; set; }}
:私の見解では
var vm = new CallViewModel();
var calledOrganizationSelectList = new List<object>();
calledOrganizationSelectList.Add(new {Text="",Id=""});
calledOrganizationSelectList.AddRange(
db.MyOrganizations.OrderBy(x=>x.Name)
.Select(x => new { Text = x.Name, Id = x.Id.ToString()}).ToList());
var sl = new SelectList(calledOrganizationSelectList, "Id", "Text",
vm.CalledOrganizationId);
vm.CalledOrganizationSelectList = sl;
return View(vm);
:
<div>CalledOrganizationId = 38 : select list contains
<ul>
<li>Value: Text: Is Selected: False</li>
<li>Value: 37 Text: rrr Is Selected: False</li>
<li>Value: 38 Text: sss1 Is Selected: True</li>
</ul>
</div>
<select data-val="true" data-val-number="The field CalledOrganizationId must be a number." id="CalledOrganizationId" name="CalledOrganizationId">
<option selected="selected" value=""></option>
<option value="37">rrr</option>
<option value="38">sss1</option> </select>
:私のレンダリングされたページのソースで
<div>CalledOrganizationId = @Model.CalledOrganizationId :
select list contains
<ul>@foreach (var itm in Model.CalledOrganizationSelectList)
{<li>Value: @itm.Value Text: @itm.Text Is Selected: @itm.Selected</li>}
</ul>
</div>
@Html.DropDownList("CalledOrganizationId", Model.CalledOrganizationSelectList)
私は最初に引っ張ってから取り組んだ私の髪の毛が残っていたものを外してから、私のViewModelに新しい変数を導入しました。これはうまくいくようです。
私はdropdownlistsで選択した項目とのトラブルがありました。上記の答えが役に立たない場合は、[this](http://stackoverflow.com/questions/9832905/dropdownlistfor-does-not-select-selected-value)を調べることを検討してください。 – Dmitry
非常に迅速で有益な回答をいただきありがとうございます。まだ動作していませんが、少なくとも私は狂っていないと知っています。今のところ、ページがロードされた後にドロップダウンを設定するjqueryをいくつか追加しました。これは次のようになります... – ajd