Javascript 将身份发送到控制器post操作
我有一页是这样写的:Javascript 将身份发送到控制器post操作,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,我有一页是这样写的: <div class="col-sm-2 displaybutton"> <div data-point-to="displaysHeader"> @using (Html.BeginForm("Administration", "Home", FormMethod.Post)) { <button id="btnAdministration" ty
<div class="col-sm-2 displaybutton">
<div data-point-to="displaysHeader">
@using (Html.BeginForm("Administration", "Home", FormMethod.Post))
{
<button id="btnAdministration" type="button" style="width:150px;height:50px;background-color:white;color:blue;border:none;font-size:medium" onclick="return GotoAdminstration();">Administration</button>
}
</div>
</div>
<div class="col-sm-2 displaybutton">
<div data-point-to="pagesHeader">
@using (Html.BeginForm("Indexes", "Meeting", FormMethod.Post))
{
<button id="btnMeetingSchedule" type="submit" style="width:150px;height:50px;background-color:white;color:blue;border:none;font-size:medium" onclick="return ShowOverlay();">Meeting Schedule</button>
}
</div>
</div>
然后,当我尝试发布时:
function GotoAdminstration() {
ShowOverlay();
var form = $('<form method="POST" action="@Url.Action("Administration","Home")">');
form.append($('<input type="hidden" name="ident" value="' + user + '">'));
$(body).append(form);
form.submit();
}
函数GotoAdminstration(){
ShowOverlay();
变量形式=$('');
表格.附加($('');
$(正文)。附加(表格);
表单提交();
}
Bu动作参数始终为空。你知道我做错了什么吗?在你的cshtml文件中包括这样一个脚本标记
<script>
var urlString='@Html.Raw(Url.Action("Administration","Home"))';
</script>
var urlString='@Html.Raw(Url.Action(“管理”、“主页”));
然后尝试在javaScript文件中使用此选项:
var form = $('<form method="POST" action="'+urlString+'">');
var form=$('');
无需使用整个表单
标记作为选择器,您只需向表单添加id
属性并将其用作选择器:
查看
@using (Html.BeginForm("Administration", "Home", FormMethod.Post, new { id = "adminform" }))
{
// form contents
}
@using (Html.BeginForm("Administration", "Home", FormMethod.Post, new { id = "adminform" }))
{
@Html.HiddenFor(model => model.Ident)
<button id="btnAdministration" type="button" style="width:150px;height:50px;background-color:white;color:blue;border:none;font-size:medium">Administration</button>
}
JS
$('#adminform').submit();
$('#btnAdministration').click(function () {
ShowOverlay();
$('#Ident').val(user); // add 'user' variable content inside hidden field
$('#adminform').submit();
});
请注意,在提交表单之前添加隐藏的input
元素听起来不是一个好主意(您需要先反序列化它)。尝试在表单中使用viewmodel属性和HiddenFor
helper(我更喜欢使用jQueryclick
event而不是onclick
):
查看
@using (Html.BeginForm("Administration", "Home", FormMethod.Post, new { id = "adminform" }))
{
// form contents
}
@using (Html.BeginForm("Administration", "Home", FormMethod.Post, new { id = "adminform" }))
{
@Html.HiddenFor(model => model.Ident)
<button id="btnAdministration" type="button" style="width:150px;height:50px;background-color:white;color:blue;border:none;font-size:medium">Administration</button>
}
当我删除加号时,我仍然会在附加报价上得到一个错误。您希望在这里实现什么?将模型发送到视图,然后将其全部原封不动地发送回来(您已经知道它在服务器上是什么,所以性能会下降),这有什么意义呢。您已经将一个javascript对象绑定到隐藏输入,而不是c#model,因此需要在POST方法中反序列化隐藏输入的值。只需传回模型的ID(作为表单中的路由参数(无输入,无脚本),然后在POST方法中再次获取它。