Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/274.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
C# 如何在Razor页面中正确路由DropDownList选择?_C#_Asp.net Core_Razor Pages - Fatal编程技术网

C# 如何在Razor页面中正确路由DropDownList选择?

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) 我认为,

我在我的一个Razor页面上使用一个选择列表作为下拉列表,允许用户选择一个广告组。当他们单击“设置组”按钮时,应显示该组的成员。页面当前重新加载,未选择任何组

以下是我的下拉列表代码:

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核心,我已经尝试提供尽可能多的信息。如有必要,我们很乐意补充更多细节。