如何在传递控制器名称和操作方法时使用javascript提交mvc表单
有没有一种方法可以使用JavaScript向我的控制器和特定的操作方法提交mvc表单?我希望如果我使用JavaScript,action方法将收到表单使用的模型。通常我会在表单中使用提交按钮,但我无法在引导模式弹出表单中使用提交按钮。我见过以下使用JavaScript提交表单的方法,但它没有指定要在控制器中使用的操作方法: $(“#我的表格”).submit() 控制器需要以特定的操作方法(即MyAction1)接收表单的视图模型,如下所示:如何在传递控制器名称和操作方法时使用javascript提交mvc表单,javascript,jquery,asp.net-mvc,Javascript,Jquery,Asp.net Mvc,有没有一种方法可以使用JavaScript向我的控制器和特定的操作方法提交mvc表单?我希望如果我使用JavaScript,action方法将收到表单使用的模型。通常我会在表单中使用提交按钮,但我无法在引导模式弹出表单中使用提交按钮。我见过以下使用JavaScript提交表单的方法,但它没有指定要在控制器中使用的操作方法: $(“#我的表格”).submit() 控制器需要以特定的操作方法(即MyAction1)接收表单的视图模型,如下所示: public PartialView
public PartialViewResult MyAction1(ViewModelabc aViewModelabc)
{
.....
return PartialView("_Browse", aViewModelabc);
}
基本上,我需要使用JavaScript提交表单,就像单击表单提交按钮一样,该按钮针对特定的操作方法,如下所示:
<button type="submit" class="btn btn-primary" data-backdrop="false"
data-dismiss="modal" id="id-FindModalSubmitBtn" formaction="MyAction1">
Load Selected Item</button>
加载所选项目
------更新-----
我在下面添加了引导模式弹出窗口,它的底部有一个提交按钮,该按钮没有达到BeginForm和submit按钮中指定的控制器操作方法
<div class="modal" id="id-FindModal">
<div class="modal-dialog">
<div class="modal-content">
<div class="modal-header">
<a href="#" class="close" data-dismiss="modal">×</a>
<h3 class="modal-title">Purchase Order Lookup</h3>
</div>
<div class="modal-body">
@using (Html.BeginForm("PartialViewForBrowseWithModel", "PurchaseOrder", FormMethod.Post))
{
<div class="row row-spacing ">
<div class="form-group row-spacing ">
@Html.LabelFor(x => Model.PurchaseOrderIds, htmlAttributes: new { @class = "control-label LabelStyle1 row-spacing " })
<div class=" row-spacing ">
@Html.DropDownListFor(x => Model.PurchaseOrderId,
new SelectList(Model.PurchaseOrderIds, "Value", "Text"), "Please Select",
new
{
@class = "form-control row-spacing DropDownStyle2 ",
@style = "width:100%; height:28px;",
@id = "id-DropDownPurchaseOrderId-FindModal"
})
@Html.ValidationMessageFor(x => x.PurchaseOrderId, "", new { @class = "text-danger row-spacing " })
</div>
</div>
</div>
<div class="modal-footer">
<button type="button" class="btn btn-secondary" data-dismiss="modal">Close</button>
<button type="submit" class="btn btn-primary" data-backdrop="false" data-dismiss="modal"
id="id-FindModalSubmitBtn" formaction="PartialViewForBrowseWithModel">
Load Selected Purchase Order
</button>
</div>
}
</div>
</div>
</div>
</div>
采购订单查询
@使用(Html.BeginForm(“PartialViewForBrowseWithModel”,“PurchaseOrder”,FormMethod.Post))
{
@LabelFor(x=>Model.purchaseOrderId,htmlAttributes:new{@class=“control label LabelStyle1 row spating”})
@Html.DropDownListFor(x=>Model.PurchaseOrderId,
新建选择列表(Model.purchaseOrderId、“值”、“文本”)、“请选择”,
新的
{
@class=“form control row spacing DropDownStyle2”,
@style=“宽度:100%;高度:28px;”,
@id=“id DropDownPurchaseOrderId FindModel”
})
@Html.ValidationMessageFor(x=>x.PurchaseOrderId,“,新的{@class=“text danger row space”})
接近
加载选定的采购订单
}
如果您要问的是,我是否可以使用JavaScript提交视图模型,并使用该模型调用MVC控制器,那么是的,您当然可以这样做
表单可以如下所示:
@using (Html.BeginForm(null, null, FormMethod.Post, new {@id = "_frmSubmitId", role = "form"})
{
// Do whatever
<button type="submit" id="_btnSubmit">Submit</button>
}
<script>
$(function(){
$("#_frmSubmitId").submit(function(){
event.preventDefault(); // Stops the default Beginform functionallity
var formdata = $("#_frmSubmitId").serialize(); // Serializes the form
$.ajax({
url: '@Url.Action("// Method", "// Controller")',
type:'POST',
data: formdata,
success: function(result){
// Do whatever
}
});
});
})
</script>
@使用(Html.BeginForm(null,null,FormMethod.Post,new{@id=“\u frmSubmitId”,role=“form”})
{
//做任何事
提交
}
$(函数(){
$(“#u frmSubmitId”).submit(函数(){
event.preventDefault();//停止默认功能
var formdata=$(“#frmSubmitId”).serialize();//序列化表单
$.ajax({
url:“@url.Action(“//方法”,“//控制器”)”,
类型:'POST',
数据:formdata,
成功:功能(结果){
//做任何事
}
});
});
})
我们序列化的模型是视图模型(视图顶部的任何模型),这就是控制器方法需要的参数。所以我猜在这种情况下,
viewmodelbc
是视图模型。我无法使提交按钮在引导模式弹出表单中工作
表单在BS模式中工作正常,所以这是您应该解决的第一个问题我有问题在下面的方法中使用JavaScript提交表单,但它没有指定要在控制器中使用的操作方法:$(“#myForm”).submit();
。按正常方式提交表单,并将其发送到表单的操作
属性中提供的位置从按钮中删除formaction=
,然后它将显示您在@Html.BeginForm中指定的内容。您的问题很可能是由formaction=“PartialViewForBrowseWithModel”引起的
不包括控制器,即它应该是formaction=“PurchaseOrder\PartialViewForBrowseWithModel”
-因此使用formaction='@Url.Action(“PartialViewForBrowseWithModel”,“PurchaseOrder”)”
来获得正确的路径。如果您的视图已经在“PurchaseOrder”中,那么您可以使用formaction='@Url.Action(“PartialViewForBrowseWithModel”)
但请注意“PurcaseOrder”(控制器)是隐含的,因此仍将输出PurchaseOrder\PartialViewForBrowseWithModel
(或任何实际需要的内容)。这一点令人困惑:“我们序列化的模型是视图模型”-您正在序列化表单(表单中的输入/选择/etc)。这可能与viewmodel有关,也可能与viewmodel无关。然后使用模型绑定将其转换为动作的参数-动作的参数也可能与viewmodel有关,也可能与viewmodel无关。