Asp.net
SqlFunctions.StringConvert 添加了不必要的填充
在我的 ViewModel 中,我返回以下下拉列表:
public IEnumerable<SelectListItem> Statuses { get { using (var context = new AssetManager.Models.AssetManagerEntities()) { var query = from status in context.AssetStatuses where status.Reserved != true select new SelectListItem() { Value = SqlFunctions.StringConvert((double)status.Id), Text = status.Name, Selected = false }; return query.ToList(); } } }然後在我看來,它有點像這樣:
@Html.DropDownListFor(model => model.Status, (IEnumerable<SelectListItem>)Model.Statuses)這一切正常,除了 SqlFunctions.StringConvert,預設情況下使字元串的長度為 10,所以我最終在 html 中得到了這個:
<option value=" 7">Free to loan</option>記下值欄位中的間距。這是一個問題,因為我的 ViewModel 要求這個欄位是 int。
我可以簡單地指定長度參數,但這不是動態的。
有沒有人看到這個問題,或者有解決方案?
謝謝,尼克
更新
下面蒂姆的回答是比這個更好的解決方案,但我無法刪除接受的答案,並且 OP 沒有回應我接受他的回答的請求。
原始答案
最簡單的方法可能是將轉換工作解除安裝到您的伺服器上,而不是數據上下文。如果您將數據層與表示層分開,這將自動發生。但為簡單起見,我將堅持使用您目前的架構:
var query = from status in context.AssetStatuses where !status.Reserved select new { status.Id, status.Name }; return query.AsEnumerable() .Select(status => new SelectListItem { Value = status.Id.ToString(), Text = status.Name, Selected = false }) .ToList();
將其更改為:
Value = SqlFunctions.StringConvert((double)status.Id).Trim(),