Tom*_*Tom 5 c# asp.net asp.net-mvc-5
我有一个主视图和两个部分视图.我需要能够使用我的第一个局部视图中的值填充viewmodel,并在单击按钮时将viewmodel传递给第二个局部视图.该按钮位于第二个局部视图中.我已经写了一个javascript函数来做这个,但是当我检查控制器方法时,viewmodel是空的.正如您在下面的屏幕截图中看到的那样,服务框是第二个局部视图
第一部分视图
第二部分观点
@model CC.GRP.MCRequest.ViewModels.NewRequestViewModel
<div id="NewRequest">
<h1>Services</h1>
@using (Html.BeginForm())
{
@Html.LabelFor(model => model.ProjectName, htmlAttributes: new { @class = "control-label col-md-5" })
@Html.EditorFor(model => model.ProjectName, new { htmlAttributes = new { @class = "form-control", style = "width:100%" } })
<input type="submit" value="Save" class="btn btn-default" onclick="mapInit()" />
}
</div>
<script type="text/javascript">
function mapInit() {
$.ajax({
url: '@Url.Action("Service", "request")',
// datatype: "json",
data: $('form').serialize(), // update this
type: "POST",
// contentType: 'application/json; charset=utf-8'
});
}
</script>
Run Code Online (Sandbox Code Playgroud)
调节器
[HttpPost]
public PartialViewResult Service(NewRequestViewModel model)
{
return PartialView("_NewService", model);
}
Run Code Online (Sandbox Code Playgroud)
以下是我对您如何解决任务的建议:
<input type="button" value="Save" class="btn btn-default" onclick="mapInit()" />当原始提交事件在您的 ajax 方法之后执行时,此步骤对于不清理表单是必要的。在您的 mapInit 函数中,您应该添加一个属性success并在那里编写一个函数,以这种方式手动更新您的第二个部分表单:
function mapInit() {
$.ajax({
url: '@Url.Action("Service", "request")',
// datatype: "json",
data: $('form').serialize(), // update this
type: "POST",
success: function (data)
{
var html = $(data).find('form').html();
$('#NewRequest').find('form').html(html);
}
});
}
Run Code Online (Sandbox Code Playgroud)因此,只要您的第一个部分表单具有相同的字段,您就可以根据需要填写第二个表单。
| 归档时间: |
|
| 查看次数: |
848 次 |
| 最近记录: |