Asp.net mvc 4 发布的数据不绑定到操作参数

Asp.net mvc 4 发布的数据不绑定到操作参数,asp.net-mvc-4,post,model-view-controller,data-binding,Asp.net Mvc 4,Post,Model View Controller,Data Binding,这是我的看法 @using System.Web.Optimization @model IEnumerable<DnDBeginner.Models.User> @{ ViewBag.Title = "Index"; } <div class="row"> <div class="col-md-12"> <h4>Users</h4> </div> </div>

这是我的看法

    @using System.Web.Optimization
@model IEnumerable<DnDBeginner.Models.User>

@{
    ViewBag.Title = "Index";
}

<div class="row">
    <div class="col-md-12">
        <h4>Users</h4>
    </div>
</div>

@using (Html.BeginForm("ListUserCharacters", "Players", FormMethod.Post, new { id="UserForm"}))
{
    <input id="userID" type="hidden" />
    foreach (var item in Model)
    {
        <div class="row">
            <div class="col-md-1">
                @item.UserName
            </div>
            <div class="col-md-11">
                <span class="link" data-userid="@item.UserID.ToString()">Choose</span>
                <hr />
            </div>
        </div>
    }
    <input type="submit" value="submit" />
}

<script>
    $('.link').click(function () {
        $('#userID').val($(this).data('userid'));
        $('#UserForm').submit();
});
    });
</script>
操作已成功访问,但userID获得空值,因此它不会绑定到隐藏字段值。我错过了什么?不知道它是否相关,但当我查看chromes web工具的“网络”部分时,我得到了一个“请求URL: 请求头
临时标题显示为“因此我甚至不确定表单数据是否已成功发布。

发布请求正文应类似于userID='user id'。所以你们应该在身体里看到一些东西。你试过添加“FromBody”吗

public ActionResult ListUserCharacters([FromBody]string userID)
{
    var userCharacters = new { userID = userID };
    return View();
}
此外,如果这还不能解决问题,您可以帮助调试,以确保使用限定语句在客户机上填充值,以确保#userID具有某些内容

    var value = $('#userID').val();
    if (value === '' || value === undefined || value === null) {
        console.log('no value');
    }
    else {
        console.log('value is', value);
        $('#UserForm').submit();
    }
最后,如果没有填充该值,请尝试将跨度放在“a”元素中,以使单击更可靠

你可以试试这样的。。。没有在我这边测试过

<a href="onclick:$('#userID').val('item.UserID.ToString()'"><span>Choose</span></a>

post请求正文应该类似于userID='user id'。所以你们应该在身体里看到一些东西。你试过添加“FromBody”吗

public ActionResult ListUserCharacters([FromBody]string userID)
{
    var userCharacters = new { userID = userID };
    return View();
}
此外,如果这还不能解决问题,您可以帮助调试,以确保使用限定语句在客户机上填充值,以确保#userID具有某些内容

    var value = $('#userID').val();
    if (value === '' || value === undefined || value === null) {
        console.log('no value');
    }
    else {
        console.log('value is', value);
        $('#UserForm').submit();
    }
最后,如果没有填充该值,请尝试将跨度放在“a”元素中,以使单击更可靠

你可以试试这样的。。。没有在我这边测试过

<a href="onclick:$('#userID').val('item.UserID.ToString()'"><span>Choose</span></a>


感谢您抽出时间回答我的问题


问题是在隐藏字段
中,需要“name”属性。提交表单时,似乎需要输入元素的“id”和“name”属性,否则浏览器将无法正确编码上载数据和请求。这就是为什么我在chromes网络工具的网络部分收到“显示临时标题”的消息。所以这个
修复了它。

感谢您抽出时间回答我的问题

问题是在隐藏字段
中,需要“name”属性。提交表单时,似乎需要输入元素的“id”和“name”属性,否则浏览器将无法正确编码上载数据和请求。这就是为什么我在chromes网络工具的网络部分收到“显示临时标题”的消息。所以这个
修复了它