C# 如何在Razor页面中正确路由DropDownList选择?
我在我的一个Razor页面上使用一个选择列表作为下拉列表,允许用户选择一个广告组。当他们单击“设置组”按钮时,应显示该组的成员。页面当前重新加载,未选择任何组 以下是我的下拉列表代码:C# 如何在Razor页面中正确路由DropDownList选择?,c#,asp.net-core,razor-pages,C#,Asp.net Core,Razor Pages,我在我的一个Razor页面上使用一个选择列表作为下拉列表,允许用户选择一个广告组。当他们单击“设置组”按钮时,应显示该组的成员。页面当前重新加载,未选择任何组 以下是我的下拉列表代码: function adGroupSelected(e){ location.href = "/full_url?Group=" + e.selectedOptions[0].value; } 广告组: 集合组 现任成员: @DisplayFor(model=>model.Members) 我认为,
function adGroupSelected(e){
location.href = "/full_url?Group=" + e.selectedOptions[0].value;
}
广告组:
集合组
现任成员:
@DisplayFor(model=>model.Members)
我认为,以下是我的模型课程的相关部分:
private只读RDSTestSiteContext\u context;
公共UpdatedGroupModel(RDSTestSiteContext上下文)
{
_上下文=上下文;
}
[BindProperty(SupportsGet=true)]
公共字符串ADGroup{get;set;}
public List ADGroups=新列表();
[BindProperty]
公共文件集文件集{get;set;}
[BindProperty(SupportsGet=true)]
公共字符串成员{get;set;}
公共异步任务OnGetAsync(长?id)
{
if(id==null)
{
返回NotFound();
}
Fileset=await\u context.Fileset.FirstOrDefaultAsync(m=>m.Id==Id);
if(Fileset==null)
{
返回NotFound();
}
添加(新的SelectListItem{Text=“Standard”,Value=Fileset.Adgroup});
添加(新的SelectListItem{Text=“Restricted”,Value=Fileset.Adgroup+“\R”});
如果(!string.IsNullOrEmpty(ADGroup))
{
GetGroupMembership(ADGroup);
}
返回页();
}
如果在浏览器中手动输入查询,例如:
完整url?ADGroup=groupname
然后,页面将加载选定的组成员
有人能帮忙吗
最好也将两个值中的一个设置为默认值,而不是将其默认为空,或者通过在
标记中设置它来复制其中一个值。标记助手在服务器上执行。在呈现页面时,锚定标记辅助对象上的asp route ADGroup
属性未填充所选组,因为此时未选择任何组。在浏览器中执行并呈现页面后,标记辅助对象将不起作用
您可以创建一个客户端函数来处理下拉列表中的onchange
事件:
function adGroupSelected(e){
location.href = "/full_url?Group=" + e.selectedOptions[0].value;
}
然后将其分配给选择标记帮助器中当前为空的onchange
处理程序:
<select asp-for="ADGroup" asp-items="Model.ADGroups" onchange="adGroupSelected(this)">...
。。。
您不需要锚定标记帮助程序。Hi@mike brind,谢谢您的回答。我已经对它进行了测试,就激活url而言,它是有效的,但是现在如果用户在另一个字段中输入了错误的值(通过带有AddModelError()的regex-
返回页()检查),url将变为完整的url?handler=blah
。我不知道为什么会出现这种情况,我已经整理好了。需要再次设置SelectList的选项,然后用户可以在返回ModelError后继续。谢谢你花时间看这个和javascript示例-我对它知之甚少。如果有人解释我为什么被否决,那就太好了。非常新的asp.net核心,我已经尝试提供尽可能多的信息。如有必要,我们很乐意补充更多细节。