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网络工具的网络部分收到“显示临时标题”的消息。所以这个
修复了它