C# 将选项值发送到视图上的全局变量
我试图将javascript上的下拉列表的值发送到同一视图中的变量,目的是我想使用所选选项的值在另一个下拉选项中生成if语句,我不知道还有其他方法可以实现这一点 这是我的JavaScript $'sel0'。关于'change',函数{ dataTable.columns'.fechas'.searchthis.value.draw; 日期=$this.val;C# 将选项值发送到视图上的全局变量,c#,html,linq,html-select,C#,Html,Linq,Html Select,我试图将javascript上的下拉列表的值发送到同一视图中的变量,目的是我想使用所选选项的值在另一个下拉选项中生成if语句,我不知道还有其他方法可以实现这一点 这是我的JavaScript $'sel0'。关于'change',函数{ dataTable.columns'.fechas'.searchthis.value.draw; 日期=$this.val; }; 在浏览器中呈现视图后执行服务器代码的方式有: Form post,进行计算,重新渲染视图 对动作方法进行Ajax调用,将所选日
}; 在浏览器中呈现视图后执行服务器代码的方式有: Form post,进行计算,重新渲染视图 对动作方法进行Ajax调用,将所选日期作为数据传递,在动作方法中处理逻辑并返回结果。在成功时,提取您的输入或用收到的响应填充其值。
查找您需要的选项的示例有很多。razor视图中的C代码在服务器上执行并生成标记,并将返回到浏览器。选择元素更改事件上的客户端js代码稍后在客户端发生。所选选项的值不能用于再次在razor中执行某些代码 你有两个选择 使用所选选项的querystring值重新加载页面 当用户选择日期时,重新加载页面并将所选项目作为查询字符串传递。这意味着您需要更新当前的GET action方法以接受此param值,然后使用此值进行筛选
public ActionResult Index(DateTime? date)
{
YourViewModel vm = new ViewModel();
if(date!=null)
{
//Do your filtering based on the date.Value.
}
return View(vm);
}
当用户更改下拉列表时,使用选择选项值重新加载页面
$('#sel0').on('change', function () {
window.location.href="@Url.Action("Index","Home")?date="+$(this).val();
});
阿贾克斯
您可以对执行过滤器的服务器进行ajax调用,并返回部分视图,然后将其注入DOM
$('#sel0').on('change', function () {
$("#InputContainer").load("@Url.Action("GetDynamicInputs","Home")?date="+$(this).val());
});
现在确保在主页中有一个container div,我们将使用Id InputContainer向其中加载动态数量的输入
并有一个操作方法来接受日期,并根据传递的日期值使用过滤器返回局部视图
public ActionResult GetDynamicInputs(DateTime date)
{
//use the date to determine the markup you want return from your partial view
return PartialView();
}
你的C代码在客户端的js代码之前在服务器上执行,我知道这就是为什么我问是否有人知道更好的方法,或者是否存在一个wa来做这件事