将下拉列表值从视图传递到控制器

时间:2016-06-17 12:22:03

标签: javascript c# jquery html asp.net-mvc

我有一个带有多个选项的select标签,每个选项都指定一个值。

<select id="dropdown">
    <option value="1">Option 1</option>
    <option value="2">Option 2</option>
    <option value="3">Option 3</option>
    <option value="4">Option 4</option>
</select> 

此外,我有以下JQuery脚本。

$(function() {
    $(#dropdown).change(function() {
        var option = $(this).find("option:selected").text();
        var optionValue = $(this).val(); 

我使用'提醒'检查了两个值,但它们是正确的。现在我想将这些值从视图传递给控制器​​。我将select标记放在一个表单中并尝试在两个值上使用'.submit()',但这会导致脚本崩溃。我不确定我是否正确使用'.submit()',因为我是JavaScript和Jquery的初学者。简而言之,如何将选项标记值放入我的控制器的方法中?

编辑1

选择标签是一种形式,我一直试图像这样提交:

$(this).val().submit()

编辑2

此外,这是我试图获取值的控制器方法。

[HttpPost]
public ActionResult Index(string dropdown)
{
    string value = dropdown; 

    //--- conditional logic ---

    return View()
}

3 个答案:

答案 0 :(得分:1)

要使用submit(),您的下拉列表必须位于<form>

<form method="POST" action="yourControllerUrl/MyAction">
    <select id="dropdown" name="dropdownName">
        <option value="1">Option 1</option>
        <option value="2">Option 2</option>
        <option value="3">Option 3</option>
        <option value="4">Option 4</option>
     </select> 
</form>

在控制器中:

public ActionResult MyAction(string dropdownName)
{        
      // use your dropdown value here 
}

答案 1 :(得分:0)

您可以使用ajax执行此类任务

import asyncio
import time
import sys
from slackclient import SlackClient

class SlackCLI(object):
    def __init__(self):
        self.token = 'xoxp-TOKEN-HIDDEN'
        self.client = SlackClient(self.token)
        self.channel = '#general'

    def callback(self):
        text = sys.stdin.readline()

        print('[*] sending: {} to channel {}'.format(text, self.channel))
        print(self.client.api_call('chat.postMessage', channel='#general',
                                   text='{}'.format(text),
                                   username='pybot123', icon_emoji=':robot_face:'))

    @asyncio.coroutine
    def run(self):
        if self.client.rtm_connect():
            while True:
                last = self.client.rtm_read()
                if last:
                    try:
                        text = last[0]['text']
                        chan = last[0]['channel']
                        print('[!] {}: {}'.format(chan, text))

                    except:
                        pass

                yield from asyncio.sleep(1)
        else:
            print('connection failed')

    def main(self):
        loop = asyncio.get_event_loop()
        loop.add_reader(sys.stdin, self.callback)
        loop.run_until_complete(self.run())


a = SlackCLI()
a.main()

在控制器中使用params并使用&#34; dropDown&#34;获取值。作为关键

答案 2 :(得分:0)

最好的方法是扩展这个.... :)希望它有所帮助。

<强>模型

public class Model
{
    public int Id { get; set; }
    public IEnumerable<Items> items { get; set; } 
}

查看

@model App.Models.Model

@using (Html.BeginForm("ActionName", "ControllerName")) {

   @Html.DropDownListFor(x => x.Id, Model.Items)

   <button type="submit" class="btn btn-info"><i class="fa fa-floppy-o"></i></button>
}

<强>控制器

public ActionResult ActionName(Model model)
{
   var blah = model.items;

   return View(model);
}