【问题标题】:Select Tag Helper ASP .NET CORE 2.0 is not setting selected value选择 Tag Helper ASP .NET CORE 2.0 未设置选定值
【发布时间】:2018-02-13 21:09:18
【问题描述】:

我正在尝试根据此线程 Select Tag Helper in ASP.NET Core MVC 在 ASP .NET Core 2.0 MVC 应用程序中使用选择标签助手。

这是我的视图模型:

public class SensorEditViewModel
{
    public int SensorID { get; set; }
    public string Name { get; set; }
    public string Description { get; set; }
    public string Uid { get; set; }
    public string AE_SN { get; set; }
    public DateTime SubscriptionEndDate { get; set; }
    public string Type { get; set; }
    public bool sensorAccessApproved { get; set; }

    public string UserId { get; set; }
    public SelectList UserEmailList { get; set; }
}

这是 GET 的一部分,其中模型填充了 propper SelectList 和 UserId 并推送到视图:

var users = _context.Users.OrderBy(u => u.UserName).Select(x => new { Text = x.Email, Value = x.Id });
model.UserEmailList = new SelectList(users, "Value", "Text");
model.Id = ownerId;

return View(model);

最后在编辑视图中,我正在使用这样的 Select TagHelper:

<div class="form-group">
    <label class="control-label">User Email</label>
    <select asp-for="Id" asp-items="@Model.UserEmailList" class="form-control" ></select>
</div>

但我的问题是 Select 没有预设控制器中选择的值(model.Id = ownerId;)。你有什么线索可能是错的吗?谢谢。

【问题讨论】:

  • 您的意思是“未在控制器中选择值预设(model.Id = ownerId;)”,实际上,根据您的代码,Select 将具有来自用户new { Text = x.Email, Value = x.Id } 的“id” .渲染 html 时你得到什么值?
  • 我的意思是html渲染的时候没有选择值。当前呈现的 HTML 看起来像这样 &lt;select class="form-control" id="Id" name="Id"&gt; &lt;option value="fbb907b5-2d27-470e-8ef7-fb0e3e893b3d"&gt;jdddd@ddd.sk&lt;/option&gt; &lt;option value="ad0c095e-b0a1-440d-9ed6-8c2ec52ecdc1"&gt;xxxx@xxx.com&lt;/option&gt; &lt;option value="2a829fbd-fc23-4e95-b7c5-20ec741aa70c"&gt;aaaa@gmail.com&lt;/option&gt; &lt;/select&gt;
  • 尝试将其更改为 &lt;select asp-for="UserId"&gt; 顺便说一句,您的视图模型没有 Ìd 属性。
  • 实际上,当我将 Value 从 Id 更改为 Email 时,它运行良好,并且 HTML 中存在所选选项
  • 老实说,您的视图模型属性的命名有点混乱。清理它有助于解决这类问题。

标签: c# razor asp.net-core asp.net-core-tag-helpers


【解决方案1】:

您需要将选定的值传递给 SelectList 构造函数:

model.UserEmailList = new SelectList(users, "Value", "Text", ownerId)

更多信息在 MS docs

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-04-10
    • 1970-01-01
    • 2018-11-03
    • 2021-03-22
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多