2017-09-19 159 views
0

我已閱讀數百篇關於此問題的文章,但我仍無法找到解決方案。Html.DropDownListFor默認選定值不起作用

請幫助這個可怕的神祕;

我想在我的DropDownListFor中有不同的默認值。 (item.id)

但是由於測試的目的,我只填寫了「3」,即使這樣也沒有,將不起作用。

模型是正確填寫,我能夠加入控制器的更多的代碼,但不會增加太多。但是,如果你要我請你。

是的,我知道這最好在控制器中製作SelectList,但首先我想讓它工作。

查看:

@foreach (var item in Model.PartialViewList1) 
    { 
     <tr> 
      <td>Plaats: </td> 
      <td>@item.PlaceNumber</td> 
      <td> 
       @Html.DropDownListFor(x => x.PartialView.Id, new SelectList(Model.PartialViewList2, "Id", "Name", 3), 
       new { onchange = "this.form.submit();" })</td> 
     </tr> 
    } 

Screen shot of the users view

+0

其PartialView.Id'的'決定選擇什麼值(即如何模型綁定的作品 - 它** **綁定到你的財產值(綁定到屬性時,「SelectList」構造函數的最後一個參數將被忽略)。但是你的代碼沒有任何意義 - 你爲同一個屬性生成多個下拉列表,所以它不清楚你想在這裏做什麼 –

+0

我在一個屏幕上有4個partialviews。我希望用戶能夠更改屏幕上每個可用位置的partialview。所以我使用「PartialViewList1」來獲取每個partialview的PlaceNumber。我使用「PartialViewList2」來獲取部分視圖的名稱。 但我發現你在這個頁面上說的是:https://nimblegecko.com/how-to-set-default-selected-value-on-drop-down-list-from-database/ 根據段落:「危險警告,有龍。「 –

+0

是的,你爲什麼生成4個下拉列表?他們都綁定到相同的屬性,這是沒有意義的 –

回答

0

我希望,也許有人可以用這個爲他或她的問題。

與Stephen Mueke我找到了解決方案。問題是如果「x => x.PartialView.Id」已經有一個值,那麼默認值:「3」將被Id覆蓋。

而你不能生成多個DropDownlistFor的同時綁定到同一個屬性。

我對我的問題的解決方案:

查看:

@using (Html.BeginForm("_PartialSettingsDropDownList1", "Home")){ 
<table> 
    @for (int i = 0; i < Model.maxNumberOfViews; i++) 
    { 
     <tr> 
      <td> 
       Plaats @(i+1) 
      </td> 
      <td> 
       @Html.DropDownListFor(x => Model.PartialViewList[i].ID, new SelectList(Model.PartialViewList, "Id", "Name", Model.PartialViewList[i].ID), "select") 
      </td> 
     </tr> 
    } 
</table> 

@Html.HiddenFor(x => x.maxNumberOfViews) 

<input class="submit" type="submit" value="Submit" />} 

控制器:

[HttpGet] 
    public PartialViewResult _PartialSettingsDropDownList1() 
    { 
     PartialScreenViewModel viewModel = new PartialScreenViewModel(); 
     viewModel.PartialViewList = homeModel.AllBoxViews(databaseRepository.PartialViews); 
     viewModel.maxNumberOfViews = viewModel.PartialViewList.Count(); 

     return PartialView(viewModel); 
    } 

    [HttpPost] 
    public RedirectResult _PartialSettingsDropDownList1(PartialScreenViewModel viewModel) 
    { 
     for (int i = 0; i < viewModel.maxNumberOfViews; i++) 
     { 
      PartialView viewOnScreen = databaseRepository.PartialViews.FirstOrDefault(x => x.ID == viewModel.PartialViewList[i].ID); 
      databaseRepository.UpdatePartialView(viewOnScreen, i+1); 
     } 

     return new RedirectResult("Settings"); 
    } 

型號:

public List<PartialView> AllBoxViews(IEnumerable<PartialView> allViews) 
    { 
     List<PartialView> OnlyBoxViews = new List<PartialView>(); 
     foreach (var item in allViews.Where(item => item.Type.Equals("box"))) 
     { 
      OnlyBoxViews.Add(item); 
     } 

     return OnlyBoxViews; 
    } 

視圖模型:

public class PartialScreenViewModel 
{ 
    public List<PartialView> PartialViewList { get; set; } 
    public int maxNumberOfViews { get; set; } 
} 

結果在屏幕上:screenshot