我有以下问题:
public class ShortInfo
{
public int Id { get; }
public string FullName { get; }
}
public class SelectSomething
{
public int Id { get; set; }
public List<ShortInfo> Info { get; set; }
}
在共享文件夹中,我有这个局部视图:
@model SelectSomething
<select asp-for="Id" asp-items="@(new SelectList(Model.Info, "Id",
"FullName"))"></select>
部分视图显示一个列表,一切正常。
但是,如果尝试执行控制器代码,请从以下链接执行:
@Url.Action("Controller","Action", new { id = Model.Id })
而不是这个
@Url.Action("Controller","Action")
我有两个不同的结果。
创建部分视图中的列表时,它会显示与之前相同的确切内容,但会根据ID号自动设置默认值。
例如,如果我从@ Url.Action到达此视图而没有额外参数,则列表是4个元素的列表,默认值是第一个元素。
如果我点击链接:
@Url.Action("Controller","Action", new { id = Model.Id })
我得到完全相同的列表,但显示的默认值是Model.Id的索引。
任何人都可以帮我理解这里发生了什么,谢谢。
答案 0 :(得分:0)
那是因为您在select标签上添加了asp-for="Id"
,这意味着此选择将是Id的值。因此,每当您在路线上提供Id时,它将对所选项目生效。