MVC - 如何在Controller中获取ListBox选择项的值?

时间:2014-10-23 18:14:33

标签: c# jquery asp.net-mvc

我有一个有两个列表框的应用程序:

 @using (Html.BeginForm())
        {
           @Html.ListBoxFor(m => m.SelectedAttributes, Model.Attributes, new {id="listBoxAvail", SIZE = 5} ) 

            <button type="button" id="add">MoveRight</button>

            <button type="button" id="remove">"MoveLeft"></button>

            <button type="button" id="remove-all">RemAll</button>

            <button type="button" id="select-all">SelAll</button>

            <button type="button" id="up" onclick="MoveUp()">Up</button>

            <button type="button" id="down" onclick="MoveDown()">Down</button>

            @Html.ListBoxFor(m => m.SelectedAttributes2, Model.SelectedItems, new { id = "listBoxSel", SIZE = 5})

            <br />
            <p>Item Caption Text (140 Characters. HTML not allowed.)</p>
            @Html.TextAreaFor(m => m.ItemCaptionText)

            <input type="submit" id="submit"  value="Save"/>
        } 

我使用jQuery将选定的值从一个列表框传输到另一个列表框但是我追加了一个&#34; L&#34;为了以后的使用价值:

$("#add").click(function () {
                $("#listBoxAvail > option:selected").each(function () {
                    $(this).remove();
                    val = $(this).val();
                    temp = $(this);
                    temp.val('L' + val)
                    $(temp).appendTo("#listBoxSel");
                });
            });

在使用F12开发人员工具转移到右侧列表框后,我看到了文本和值。我要知道的是如何从Controller中的C#代码获得该值

[HttpPost]
        public ActionResult Index(OptInViewModel viewModel)
        {
            AttributeEntities db = new AttributeEntities();
            IEnumerable<string> items = viewModel.SelectedAttributes2;
            foreach (var item in items)
            {
                var temp = item;

                // Save it
                SelectedHarmonyAttribute attribute = new SelectedHarmonyAttribute();
                attribute.CustomLabel = viewModel.ItemCaptionText;
                //attribute.IsVisible = ?
                //attribute.OrderNumber = ?
                //attribute.HarmonyAttribute_ID

            }

            return View("Index");
        }

ViewModel是:

public class OptInViewModel
    {
        public IEnumerable<string> SelectedAttributes { get; set; }
        public IEnumerable<string> SelectedAttributes2 { get; set; }
        public IEnumerable<SelectListItem> Attributes { get; set; }
        public IEnumerable<SelectListItem> SelectedItems { get; set; }
        public string ItemCaptionText { get; set; }
    }

1 个答案:

答案 0 :(得分:1)

我不完全理解你的问题,但是从我收集的内容中你试图将参数传递给MVC中的函数调用。可以像在PHP中一样将参数添加到URL。

例如,函数可以定义为

void Function (string value);

并且调用它的URL将是

~/Controller/Function?value=HelloWorld

您还可以设置路由。有关详细信息,请参阅StackOverflow上的此答案:

ASP.NET MVC - passing parameters to the controller

编辑:我看到你正在尝试使用表单提交

确保正确格式化视图,不要忘记:

@model Path.To.Model

和控制器信息:

using (@Html.BeginForm("myMethod", "Controller", FormMethod.Post))