Warning: file_put_contents(/datas/wwwroot/jiajiahui/core/caches/caches_template/2/default/show.php): failed to open stream: Permission denied in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 55

Warning: chmod(): Operation not permitted in /datas/wwwroot/jiajiahui/core/libraries/classes/template_cache.class.php on line 56
如何在MVC中的下拉更改中调用操作名称? - 源码之家

如何在MVC中的下拉更改中调用操作名称?

问题描述:

如何在选择第一个下拉列表时将数据绑定到第二个下拉列表?如何在MVC中的下拉更改中调用操作名称?

我已经使用强类型视图绑定第一个dropdownlist。

现在如何调用动作名称,并绑定第二个dropdownlist选择第一个dropdownlist?

<tr> 
      <td>Select Make:</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()" })</td> 
     </tr> 
     <tr> 
      <td>Select Model</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList)</td> 
     </tr> 

操作名称

public ActionResult FillModel(int MakeId) 
     { 
      var makedata = objVehicleContext.VehicleMakes.Where(m=>m.MakeId==MakeId); 

      ViewBag.makelist = makedata.ToList(); 
      return View(); 
     } 
+0

您需要使用ajax。参考[这个答案](http://*.com/questions/33247717/how-to-keep-cascade-dropdownlist-selected-items-after-form-submit/33248183#33248183)的例子创建级联下拉列表 –

你可以把jQuery函数在下拉列表中的变化。对于实施例

<tr> 


     <td>Select Make:</td> 
       <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList, new { @class = "form-control", @onchange = "FillModel()", id="ddlMake" 

    })</td> 
     </tr> 
     <tr> 
      <td>Select Model</td> 
      <td>@Html.DropDownListFor(m => m.SelectedMake, Model.MakesList,new {@id="ddlModel"})</td> 
     </tr> 

这是一个简单的解决方案来调用下拉变化的操作方法。

$(document).ready(function(){ 
    $("#ddlMake").change(function(){url.action('Controller Name','Action Method Name')}) 
}) 

但对于进一步的效果您必须调用Ajax调用方法和获取数据。之后,在方法成功之后,您必须在ddlModel上添加Data的其余部分。就像它。

$(document).ready(function(){ 

    $("#ddlMake").change(function(){ 
    $.ajax({ 
     type:'POST', 
     url:'url.action('Controller Name','Action Method Name')' 
     data:{id:$('#ddlMake').val()}, 
     sucess:{ 
      $("#ddlModel").append('<option value="' + ModelId.Value + '">' + Model.Text + '</option>'); 
     } 
     });)}) 
     }) 

,你需要使用控制器

public JsonResult GetModel() 
    { 
     //your dropdown datasource 
     return json(ddlModeldatasurce,JsonRequestBehavior.AllowGet); 
    } 

这样做,如果我明白你的问题正确的,那么你只需做简单的jquery.post

$("#ddlMake").change(function() { 
      $.post("controller/ActionName", function (data) { 
       $.each(data, function (val, txt) { 
        $("#ddlModel").append('<option value="' + val + '">' + txt + '</option>'); 
       }); 
      }); 
     }); 

并在控制器中:

public Actionresult GetModel() 
    { 
     //your dropdown datasource 
     return json(ddlModeldatasurce); 
    } 
+0

有没有办法做到不使用Ajax和JQuery? –

+0

是的,你也可以使用Viewbag来做到这一点,但它会导致你完整的回发。 –