【发布时间】: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 看起来像这样
<select class="form-control" id="Id" name="Id"> <option value="fbb907b5-2d27-470e-8ef7-fb0e3e893b3d">jdddd@ddd.sk</option> <option value="ad0c095e-b0a1-440d-9ed6-8c2ec52ecdc1">xxxx@xxx.com</option> <option value="2a829fbd-fc23-4e95-b7c5-20ec741aa70c">aaaa@gmail.com</option> </select> -
尝试将其更改为
<select asp-for="UserId">顺便说一句,您的视图模型没有Ìd属性。 -
实际上,当我将 Value 从 Id 更改为 Email 时,它运行良好,并且 HTML 中存在所选选项
-
老实说,您的视图模型属性的命名有点混乱。清理它有助于解决这类问题。
标签: c# razor asp.net-core asp.net-core-tag-helpers