c# - 无法从 View 将数据传递到我的 Controller

标签 c# asp.net forms xmlhttprequest

我正在尝试将 5 个可选值传递给我的 Controller

    public class ActivityManagementTwoFiltersModel
    {
    public string timeFilter { get; set; } = "Last 30 days";
    public int numberOfItemsToReturn { get; set; } = 25;
    public DateTime? dateStart { get; set; } = null;
    public DateTime? dateEnd { get; set; } = null;
    public Guid? districtId { get; set; } = null;
    }

我的 Controller 是这样的

  public async Task<ActionResult> ActivityManagementTwo( ActivityManagementTwoFiltersModel filters)   

我的观点:

  @{using (Html.BeginForm("ActivityManagementTwo", "CallCenter", FormMethod.Get, new { id = "ActivityTwoForm" }))
    {
        <div class="row ">
            <div class="col-md-12" style="float:right;">
                <div class="dateWrapper">@{Html.RenderPartial("_DateFilter"); }</div>
            </div>
        </div>
        <div class="row" style="margin-top: 10px; margin-bottom: 8px;">
            <div class="col-md-3 ActivityManagementTwoHeader" style="font-size:12px; font-weight: bold">
                Displaying Results @Model.Count() of @Model.Count()
            </div>
            <div class="col-md-3">
                Items per page:
                @Html.DropDownList("numberOfItemsToReturn", new List<SelectListItem> {
                new SelectListItem { Value = "25", Text= "25"},
                new SelectListItem { Value = "50", Text= "50"},
                new SelectListItem { Value = "100", Text= "100"},
                })                   
            </div>           
        </div>
    }
}

每当下拉菜单之一发生更改时,我想从主视图或部分 View 中点击 Controller 。我尝试了 JS 函数,但它没有提交值

    document.getElementById("numberOfItemsToReturn").addEventListener("change", function () {
    document.getElementById("ActivityTwoForm").submit();
})

没用。如何将更改时下拉菜单中的参数传递给 Controller ​​?

编辑:这是我的部分观点。部分 View 字段正在发送,只有 numberOfItemsToReturn 没有发送

 <table>
        <tr>
            <td style="text-align:right; vertical-align: top; width: 160px">
                Time filter:
            </td>
            <td style="display:inline-block; width:150px" >
                <input id="radio1" name="radioToggle" type="radio"> Recent
                <select id="timeFilter" name="timeFilter" >
                    <option value="Last 30 days">at least 18</option>
                </select>
                <br />
                <input id="radio2" name="radioToggle" class="radioTimeFilter" type="radio"> Date Range
                <div id="dateContent" class="radio-content" style="display:none;">
                    <input id="txtDateOneFilter" type="text" style="width: 70px;" placeholder="Start Date" name="dateStart"/>&nbsp;to&nbsp;
                    <input id="txtDateTwoFilter" type="text" style="width: 70px;" placeholder="End Date" name="dateEnd" />
                </div>
                <br />
            </td>
        </tr>
    </table>

最佳答案

[HttpPost] 添加到操作

[HttpPost]
public async Task<ActionResult> ActivityManagementTwo( ActivityManagementTwoFiltersModel filters)

然后修改您的表单

@{using (Html.BeginForm("ActivityManagementTwo", "CallCenter", FormMethod.Post))

将“提交”按钮添加到表单中进行测试

<input type="submit" value="Send" /> 

关于c# - 无法从 View 将数据传递到我的 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59506123/

相关文章:

c# - 通过 API 在 Team Services 中创建工作项

c# - 是否可以复制 .NET HashAlgorithm(用于重复的增量哈希结果)?

c# - 错误页面上的 ASP.net 捕获错误

javascript - jquery ajax 调用不在 firefox 中执行

c# - sqlParameters vs string.Format 哪个更能提高速度?

Win32_PhysicalMemory 上的 C# NullReferenceException

asp.net - 在 IIS URL 重写 2 中重新处理重写的 URL 时出错

c# - Asp.net 数据透视表

java - Struts2 要求用户上传文件验证

forms - Symfony2 表单生成器实体类型选定值