将文本框转换为int数据库列的数字下拉列表

时间:2013-12-11 15:48:45

标签: c# asp.net-mvc

我有页码,当在新的上显示它时,我希望它显示10个数字的下拉列表。现在,因为它只是一个int列,它显示为一个文本框。

更改此内容的最简单方法是什么?

1 个答案:

答案 0 :(得分:1)

向视图模型添加Collection属性以显示下拉值,并为选定值添加一个。

public class CreatePostVM
{
  public string Name { set;get;}
  public List<SelectListItem> Pages { set;get;}
  public int SelectedPage { set;get;}
  public CreatePostVM()
  {
    Pages =new List<SelectListItem>();
  }
}

并在您的GET操作中加载视图模型对象的Pages集合并发送到视图..

public ActionResult CreatePost()
{
  var vm=new CreatePostVM();
  //Adding 1 to 10 as per the question
  for(int i=0;i<10;i++)
  {
     vm.Pages.Add(new SelectListItem { Value=i.ToString(), Text=i.ToString()});
  }
  return View(vm);
}

并在您的视图中,该视图强类型为CreatePostVM

@model CreatePostVM
@using(Html.BeginForm())
{
  <label>Name :</label>  @Html.TextBoxFor(s=>s.Name)
  <label>Page :</label>  @Html.DropDownListFor(s=>s.SelectedPage,Model.Pages)
  <input type="submit" value="Save" />
}

并在您的HttpPost操作中,检查SelectedPage属性值。

[HttpPost]
public ActionResult CreatePost(CreatePostVM model)
{
  var pageNumber=model.SelectedPage;
  //do something with the above value
 //to do : Save and Redirect
}