You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Asp.Net Core 如何将字符串列表各值逐行显示在textarea中

列表内容在textarea逐行显示解决方案

textarea仅支持字符串类型的绑定值,无法直接自动渲染List<string>的每个元素为单独行,你需要先将列表转换为以换行符分隔的字符串,再绑定到textarea,以下是两种可用方案:

  • 方案1:调整ViewModel与控制器逻辑(更稳定,推荐)
    第一步,给你的PollViewModel新增一个字符串类型的属性,用于textarea绑定:
public class PollViewModel
{
    // 原有其他属性保留
    // 如果后续提交需要列表格式,原有AnswerList可保留,否则可删除
    public List<string> AnswerList { get; set; }
    // 新增textarea专用绑定属性
    public string AnswerText { get; set; }
}

第二步,修改控制器逻辑,将列表拼接为带换行符的字符串:

public async Task<IActionResult> AddOrEditPoll(Guid Id)
{            
    var polloptionList = await _admin.GetQuestionsListByPollId(Id);
    PollViewModel model = new PollViewModel();    
    // 用系统自带的换行符拼接所有答案,自动适配不同操作系统的换行规则
    model.AnswerText = string.Join(Environment.NewLine, polloptionList.Select(item => item.Answer));
    return View(model);
}

第三步,修改视图代码,绑定新增的字符串属性:

<div class="form-group">
    <label class="control-label">Answer</label>
    <textarea asp-for="AnswerText" class="form-control"></textarea>
</div>

如果你提交表单后需要将textarea的内容转回列表格式,用以下代码处理即可:

// 不需要保留空行就保留StringSplitOptions.RemoveEmptyEntries,需要的话删除该参数即可
List<string> answerList = model.AnswerText.Split(Environment.NewLine, StringSplitOptions.RemoveEmptyEntries).ToList();
  • 方案2:不改ViewModel,直接在视图渲染(适合临时需求)
    直接在textarea内循环输出每个答案加换行,不需要修改控制器和ViewModel:
<div class="form-group">
    <label class="control-label">Answer</label>
    <textarea asp-for="AnswerList" class="form-control">
@foreach (var answer in Model.AnswerList)
{
    @:@answer
    @:
}
    </textarea>
</div>

注意此方案要控制好视图内的缩进空格,避免出现多余的空行或缩进。

内容的提问来源于stack exchange,提问作者sunboy_sunboy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.23 16:27:01