在HTML中选择动态列表项

时间:2016-09-30 22:47:10

标签: c# html asp.net-mvc

我正在做一个管理应用程序用户有一个部分我有一个<select></select>的表单 这是从

填充的
@{ Html.RenderAction ("ListaTipoDeUsuarios", new {selected = 0}); }

这(Index.cshtml):

...
<div class="lg-xs-12">
   <label>Tipo Usuario</label>
   <select name="tipoUsuario" class="form-control" >
      @{Html.RenderAction("ListaTipoDeUsuarios", new { selected = 0 });}                                
   </select>
</div>
....

我在控制器中有我的功能,它执行查询以带来用户类型列表(HomeController.cs)

[ChildActionOnly]        
public PartialViewResult ListaTipoDeUsuarios()
{
  string dtTipoUser = client.GetTiposUsuario("{}");
  DataTable dt = (DataTable)JsonConvert.DeserializeObject(dtTipoUser, typeof(DataTable));
  List<TipoUsuarioBO> listaTiposUsuarios = new List<TipoUsuarioBO>();
  foreach (DataRow row in dt.Rows)
  {
    TipoUsuarioBO tipoUsuario = new TipoUsuarioBO();
    tipoUsuario = TiposUsuarioBR.MapeoTipoUsuario(row, tipoUsuario);
    listaTiposUsuarios.Add(tipoUsuario);
  }      
  return PartialView(listaTiposUsuarios);
}

我的列表视图(ListaTipoDeUsuarios.cshtml)

@foreach (var item in Model)
{
    <option value="@item.Id">@item.Id - @item.Descripcion</option>
}

我的问题是,如何在加载列表时生成一个所选项目。目前,在为视图收费时默认选择列表中的第一项。

注意:尝试更改“new selected = {0}”的“0”但不执行任何操作。

2 个答案:

答案 0 :(得分:0)

您需要更改呈现选项的PartialView的模型。你有2个选择。

  1. 更改现有的TipoUsuarioBO对象以添加另一个名为SelectedID的属性
  2. OR

    1. 使用以下声明创建新模型。

      public class OptionsModel <-- Rename to naming conventions
      { 
          public List<TipoUsuarioBO> TipoUsuarioBO { get; set; }
          public int SelectedID {get; set; }
      }
      
    2. 并且,在渲染选项元素时,请使用以下

      @foreach (var item in Model.TipoUsuarioBO)
      {
          <option value="@item.Id" @Html.Raw(@item.Id == Model.SelectedID ? "selected" : "") >@item.Id - @item.Descripcion</option>
      }    
      

答案 1 :(得分:0)

为什么您不尝试使用.state('list', { url: '/list?country&state&city', templateUrl: "list.html", controller : 'myController', resolve: { currentUrlTypeParam : ['$stateParams', function($stateParams){ var urlTypeParameter = {} // define an object that we'll return as the value for $scope.loadMethodParameters if($stateParams.country && typeof $stateParams.country !== undefined){ urlTypeParameter.type = 'country'; urlTypeParameter.parameter = $stateParams.country; } else if($stateParams.state && typeof $stateParams.state !== undefined){ urlTypeParameter.type = 'state'; urlTypeParameter.parameter = $stateParams.state; } else if($stateParams.city && typeof $stateParams.city !== undefined){ urlTypeParameter.type = 'city'; urlTypeParameter.parameter = $stateParams.city; } else { urlTypeParameter.type = 'default'; } return urlTypeParameter; }] } }) 作为ListaTipoDeUsuarios.cshtml视图的模型。

List<SelectListItem>

和您的观点

[ChildActionOnly]        
public PartialViewResult ListaTipoDeUsuarios()
{
  string dtTipoUser = client.GetTiposUsuario("{}");
  DataTable dt = (DataTable)JsonConvert.DeserializeObject(dtTipoUser, typeof(DataTable));
  List<SelectListItem> listaTiposUsuarios = new List<SelectListItem>();
  foreach (DataRow row in dt.Rows)
  {
    TipoUsuarioBO tipoUsuario = new TipoUsuarioBO();
    tipoUsuario = TiposUsuarioBR.MapeoTipoUsuario(row, tipoUsuario);
    listaTiposUsuarios.Add(new SelectListItem()
      {
        Text = tipoUsuario.Id+"-"+tipoUsuario.Descripcion,
        Value = tipoUsuario.Id.ToString(),
        Selected = true //if you want this item selected otherwise false
      });
  }      
  return PartialView(listaTiposUsuarios);
}