首页 > 解决方案 > 在提交时从 textarea 值设置 asp-route-content 参数

问题描述

我有一个 razor-pages 按钮 tag-helper 调用一个 asp-page-handler,它有一个 asp-route-content 参数,该参数需要从按钮提交上的 razor 页面视图中的 textarea 控件中获取它的值。如何实现?

Razor 查看部分代码:

 <form method="post">
      <div class="modal-body">
           <textarea id="content" name="content" cols="90" rows="4" placeholder="Comment" required></textarea>
      </div>
      <div class="modal-footer">
           <button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
           <button type="submit" asp-page="/Post" asp-page-handler="ReplyToComment"
                   asp-route-blogid="@Model.BlogID" asp-route-parentid="@Model.ID"
                   asp-route-email="@user.Email" asp-route-author="@author"
                   asp-route-content="" class="btn btn-primary">Save Reply</button>
      </div>
 </form>

剃刀页面处理程序:

    public async Task<IActionResult> OnPostReplyToComment(int blogid, 
           int parentid, string email, string author, string content)

标签: asp.net-corerazor-pages

解决方案


您需要将 textarea 内容绑定到页面上的属性:

    [BindProperty]
    public string Content { get; set; }

asp-for并在 textarea 上使用标签助手:

<textarea asp-for="Content" cols="90" rows="4" placeholder="Comment" required></textarea>

或者使用[FromForm]方法签名中的属性:

public async Task<IActionResult> OnPostReplyToComment(int blogid, 
       int parentid, string email, string author, [FromForm] string content)

有关更多信息,请参阅有关模型绑定的 MS Docs


推荐阅读