2

我有一个通用的视图布局页面。此布局页面包含一个下拉列表,其中显示了可用日期的列表。我想要的是仅更改数据参数后重新加载此页面。控制器、动作和任何其他参数应该以某种方式从当前请求上下文中获取。

如果我想在每个视图上手动执行,我会说它等于

@Html.ActionLink(
     "",                                        
     "I need to have current action name here", 
     new { date = "The Value of the chosen SelectListItem" });

我怎样才能做到这一点?或者有什么不同的方法吗?

4

2 回答 2

2

有关当前操作的信息可在 中找到RequestContext,您可以直接访问它:

@Url.Action(ViewContext.RequestContext.RouteData.Values["action"], 
         new { date = "The Value of the chosen SelectListItem" });

在您的情况下,我会将 url 添加到选项数据属性,然后使用 jQuery 使用它:

$('select#yourid').change(function() {
    document.location.href = $(this).find('option:selected').data('url'));
});​

如何在下拉列表更改时获取数据属性可以在这个FIDDLE中看到。

于 2012-10-23T07:37:04.133 回答
-2

html:

<select id="mySelect" name="list" size="1"> 
   <option value="1">Option 1</option> 
   <option value="2">Option 2</option> 
</select> 
<span id="tag"></span> 

Javascript:

//cache the select and span elements  var mySelect =
 document.getElementById("mySelect"), 
 tag = document.getElementById("tag");    //when it changes  
 mySelect.onchange = function() { 
 //change the tag innerHTML checking the selected value of the select 
 tag.innerHTML = mySelect.value === "1" ? "some text" : "some other text";  }

那是一个例子。如果你想加载另一个页面 - 调用另一个 JS 函数或 ajax 控件

于 2012-10-23T07:28:21.677 回答