我有一个常见的视图布局页面。此布局页面包含一个下拉列表,其中显示了可用日期列表。我想要的是重新加载这个页面只更改了数据参数。控制器,动作和任何其他参数应以某种方式从当前请求上下文中获取。
如果我想在每个视图上手动执行,我会说它等于
@Html.ActionLink(
"",
"I need to have current action name here",
new { date = "The Value of the chosen SelectListItem" });
我怎样才能做到这一点?或者有什么不同的方法吗?
答案 0 :(得分: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中找到。
答案 1 :(得分:-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控件