Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/78.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Html 我希望创建一个下拉选择列表,其中包含可以触发http Get并刷新页面的选项项_Html_Asp.net Mvc_Html.dropdownlistfor - Fatal编程技术网

Html 我希望创建一个下拉选择列表,其中包含可以触发http Get并刷新页面的选项项

Html 我希望创建一个下拉选择列表,其中包含可以触发http Get并刷新页面的选项项,html,asp.net-mvc,html.dropdownlistfor,Html,Asp.net Mvc,Html.dropdownlistfor,我希望创建一个下拉选择列表,其中包含可以触发http Get并刷新页面的选项项。 我希望在单击下拉列表中的选项时在控制器操作中运行一些代码。 我使用了Html.DropdownlistFor()帮助程序,但我无法这样操作它。 这是代码,你可以更好地理解我 var olist = db.ItemPackagingUnits.Where(i => i.ItemName.Equals(item.ItemName.ToUpper().Trim())); <td>

我希望创建一个下拉选择列表,其中包含可以触发http Get并刷新页面的选项项。 我希望在单击下拉列表中的选项时在控制器操作中运行一些代码。 我使用了Html.DropdownlistFor()帮助程序,但我无法这样操作它。 这是代码,你可以更好地理解我

var olist = db.ItemPackagingUnits.Where(i => i.ItemName.Equals(item.ItemName.ToUpper().Trim()));
       <td>
         <select>
               @foreach(var oitem in olist)
               { 
                  <option value ='<a href ="/Restaurant/DoSales?ItemName=@item.ItemName&PackagingUnit=@oitem.UnitOfMeasurementName&recalulatePrice=true">@oitem.UnitOfMeasurementName</a>'>@oitem.UnitOfMeasurementName</option>
               }
         </select>
      </td> 
var olist=db.itempackingunits.Where(i=>i.ItemName.Equals(item.ItemName.ToUpper().Trim());
@foreach(olist中的var oitem)
{ 
@oitem.UNITOF测量单位名称
}

我希望我已经就我希望实现的目标提供了足够的信息。DoSales是餐厅控制器中的一个操作,它同时具有Get和Post部分,但我只希望在用户单击生成的下拉列表中的任何选项时调用Get部分并同时刷新页面(否则我将使用Ajax或JSon)。谢谢。

是的,它成功了!谢谢Mario J Vargas!下面是代码和javascript

var olist = db.ItemPackagingUnits.Where(i => i.ItemName.Equals(item.ItemName.ToUpper().Trim()));
   <td>
     <select onchange ="myFunc(this)">
           @foreach(var oitem in olist)
           { 
              <option value ='/Restaurant/DoSales?ItemName=@item.ItemName&PackagingUnit=@oitem.UnitOfMeasurementName&recalulatePrice=true'>@oitem.UnitOfMeasurementName</option>
           }
     </select>
  </td> 

 <script type="text/javascript">
    function myFunc(myDropdown) {
        //var myDropdown = document.getElementById(ddname);
        window.location = myDropdown.options[myDropdown.selectedIndex].value;
    }
var olist=db.itempackingunits.Where(i=>i.ItemName.Equals(item.ItemName.ToUpper().Trim());
@foreach(olist中的var oitem)
{ 
@oitem.UNITOF测量单位名称
}
函数myFunc(myDropdown){
//var myDropdown=document.getElementById(ddname);
window.location=myDropdown.options[myDropdown.selectedIndex].value;
}

Anon,我相信你的建议有一些优点,听起来可行,但我很快就实施了Mario的建议。谢谢你的回复。事实上,没有比StackOverflow更好的地方了!再次感谢Mario和Anon。

使用
DropDownListFor()
HTML帮助程序无法做到这一点。不要在
属性中嵌入HTML,而是取出锚定标记(
)代码,保留正在生成的URL,并使用JavaScript绑定到生成的
选择
元素(下拉列表)的
更改
事件。然后,您可以使用JavaScript确定选择了哪个元素,并写入
window.location=myDropdown.options[myDropdown.selectedIndex].value。还有其他方法可以改进这一点,但一般的想法是,OPTION标记只包含您需要的内容,并将您的工作与JS结合起来处理重定向。使用Jquery绑定select list change事件,并根据该值触发ajax请求。