DropdownList如何在MVC中工作?

时间:2016-06-03 19:52:40

标签: c# asp.net asp.net-mvc drop-down-menu webforms

我使用过Webform DropDownList,发现MVC下拉列表很容易让人困惑:

问题:

    • 让MVC下拉列表成为indexchange的服务器端事件,selecteditemChange是否为WebForms?
    • 如何在控制器中获取dropdownList selecteditems的TEXT和VALUE(据我所知,我只能在控制器中获取选定值而不是文本)?

1 个答案:

答案 0 :(得分:0)

您必须记住,您可以在ASP.NET MVC中执行所有可以在ASP.NET MVC中执行的操作。唯一的区别是到达那里的过程。这是你的问题的答案:

  1. 简单的答案是否定的。如果您想通知服务器更改,您需要使用javascript处理更改并对服务器执行ajax调用。
  2. 您可以同时获取控制器中下拉项目的TEXT和VALUE。
  3. 以下是代码示例:

    <强>控制器:

    public class HomeController : Controller
    {
        public ActionResult DropExample()
        {
            var fruits = new List<SelectListItem>();
            fruits.Add(new SelectListItem { Text = "Orange", Value = "1" });
            fruits.Add(new SelectListItem { Text = "Banana", Value = "2" });
            fruits.Add(new SelectListItem { Text = "Grapes", Value = "3" });
    
            ViewBag.Fruits = fruits;
    
            return View();
        }
    
        public JsonResult GetJsonData(string value,string text)
        {
            System.Diagnostics.Debugger.Break();
            string message = String.Format("You have selcted - {0}({1}).This is from the server...",text,value);
            return Json(new {Message = message }, JsonRequestBehavior.AllowGet);
        }
    }
    

    查看:

    <script src='http://ajax.googleapis.com/ajax/libs/jquery/1.8.0/jquery.min.js' type="text/javascript"></script>
    <script type="text/javascript">
        $(function () {
            $('#fruit').change(function () {        
                var value = $(this).val();
                var text = $(this).find("option:selected").text();
    
                var message = "You selcted - " + text + "(" + value + ").Now let's notify the server...";
                alert(message);
    
                $.getJSON("/Home/GetJsonData?value=" + value + "&text=" + text, null, function (data) {
                    $("#result").empty();
                    $("#result").html(data.Message);
                });
    
            });
    
        });
    </script>
    @Html.DropDownList("fruit", ViewBag.Fruits as List<SelectListItem>)
    <div id="result"></div>
    

    在ASP.NET Web表单中,我们被服务器端事件和控件所破坏,以便快速开发应用程序,但每当我们需要稍微改变事件或控件的外观和行为方式时,我们就会遇到困难在MVC中我们没有这个问题,因为我们可以完全控制生成的HTML,看起来好像很多工作起初以MVC方式做事,但是当你收到它时,它有很大的好处。来自客户的定制要求。这是MVC如此受欢迎的主要原因之一