如何从视图中获取dropdownlist选项并将其传递给模型(未来目的)

时间:2013-07-30 03:33:47

标签: c# asp.net-mvc asp.net-mvc-3 asp.net-mvc-4 razor

我有一个下拉列表,我需要在视图中设置所选值,稍后当用户选择下拉列表中的任何项目时,我需要将其传递给模型..我是绑定下拉列表像这样在控制器中列出..

       [AcceptVerbs(HttpVerbs.Get)]
        public ActionResult Index()
        {
            var itemsforDropdown = new List<SelectListItem> {             
               new SelectListItem{ Text = "Amount" , Value = "Amount"},
               new   SelectListItem{Text= "Pound", Value ="Pound"},
                new  SelectListItem {Text ="Percent", Value ="Percent"}            
            };
            ViewBag.ItemsforDrop = itemsforDropdown;
            //ViewData["listitem"] = itemsforDropdown;
            return View("DdlCrossFields");
        }

我的模特中有一个属性就像这样...

public class CrossFieldValidation
{
    [ValueMustbeInRange]
    public string DDlList1
    { get; set; }

    public string SelectedValue
    { get; set; }

    // [Required(ErrorMessage = "Quantity is required")]

    [Display(Name = "Quantity:")]
    public string TxtCrossField
    { get; set; }
}

这是我的看法......

  @using (Html.BeginForm("PostValues", "CrossFieldsTxtboxes"))
  {   
    @Html.ValidationSummary(true)
    <div class ="editor-field">
      @Html.TextBoxFor(m => m.TxtCrossField)
       @Html.ValidationMessageFor(m=>m.TxtCrossField)
    </div>
      @Html.DropDownList("ItemsforDrop", ViewBag.ItemsforDrop as SelectList,"Select A state", new {id= "State"})  
    //here i need to get  the selected value and i need to pass the this on to model fro future purpose " 
    <input id="PostValues" type="Submit" value="PostValues" />
   }

任何人都会对此有所帮助...... 非常感谢.....

2 个答案:

答案 0 :(得分:0)

在您的控制器[HttpPost]操作中添加以下内容。

string selectedVal = Request.Form["ItemsforDrop"].ToString();

答案 1 :(得分:0)

我发现很难弄清楚你想要在这里实现什么,但我会设置如下页面。

这样,CrossFieldValidation就会被发送到列表中所选值的PostValues

<强>模型

public class CrossFieldValidation
{
    [ValueMustbeInRange]
    public string DDlList1
    { get; set; }

    /* add the items list into the model */
    public IEnumerable<SelectListItem> Items 
    { get; set; }    

    public string SelectedValue
    { get; set; }

    [Display(Name = "Quantity:")]
    public string TxtCrossField
    { get; set; }
}

<强>控制器

[AcceptVerbs(HttpVerbs.Get)]
public ActionResult Index()
{
    var model = new CrossFieldValidation {
        Items = new [] {             
           new SelectListItem{ Text = "Amount" , Value = "Amount"},
           new SelectListItem{Text= "Pound", Value ="Pound"},
           new SelectListItem {Text ="Percent", Value ="Percent"}            
        }
    };     

    return View(model);
}

查看

 @model CrossFieldValidation
 @using (Html.BeginForm("PostValues", "CrossFieldsTxtboxes"))
  {   
    @Html.ValidationSummary(true)
    <div class ="editor-field">
      @Html.TextBoxFor(m => m.TxtCrossField)
       @Html.ValidationMessageFor(m=>m.TxtCrossField)
    </div>
    @Html.DropDownListFor(m=>m.SelectedValue, new SelectList(Model.Items, "Value", "Text"))  

    <input id="PostValues" type="Submit" value="PostValues" />
   }