首页 > 解决方案 > ASP .NET MVC 5 - 如何在 Ajax.ActionLink 中添加表单模型?

问题描述

我正在处理表格分页,每个页面都调用控制器来获取部分数据,然后返回部分视图并将其更新为 HTML 表格。

这是我的控制器的样子:

public ActionResult SearchData(FormModel model, int? page)
{
    /*Codes to get data from DB*/
    return PartialView("_DataTable", model);
}

表单输入是这样的:

@model Project.ViewModel

@using (Ajax.BeginForm("SearchData", "Player", new AjaxOptions 
    { HttpMethod = "GET", UpdateTargetId = "data-table", InsertionMode = InsertionMode.Replace }))
{
    @Html.LabelFor(m => m.FormModel.Username)
    @Html.TextBoxFor(m => m.FormModel.Username, new { placeholder = "[Username]" })
    
    @*And some more input, all are in FormModel class.*@
}

<div id="data-table">
   @Html.Partial("_DataTable")
</div>

我生成页面的方式如下:

for (var pageNum = Model.PlayerList.Pager.StartPage; pageNum <= Model.PlayerList.Pager.EndPage; pageNum++)
{
   if (pageNum == Model.PlayerList.Pager.CurrentPage)
   {
       <td><span>@pageNum</span></td>
   }
   else
   {
       <td>
           @Ajax.ActionLink(pageNum.ToString(), "SearchData", new {page = pageNum}, new AjaxOptions
           {
               HttpMethod = "GET",
               InsertionMode = InsertionMode.Replace,
               UpdateTargetId = "data-table"
           })
       </td>
   }
}

我只能传入page值,是否可以将表单输入包含Model在内Ajax.ActionLink?像这样的东西:

new {model = Model.FormModel, page = pageNum}

我尝试了上面的方法,但没有奏效。任何帮助,将不胜感激。

标签: c#asp.net-mvc

解决方案


你需要像这样添加 FormModel 的属性

new {Username="some username",page = pageNum}


推荐阅读