我有一個主視圖和兩個局部視圖。我需要能夠使用我的第一個局部視圖中的值填充視圖模型,並在單擊按鈕時將視圖模型傳遞到第二個局部視圖。該按鈕位於第二個局部視圖中。我已經寫了一個JavaScript函數來做到這一點,但當我檢查控制器方法時,viewmodel是空的。正如你可以在下面的服務框中的截圖中看到的是第二部分視圖在部分視圖之間傳遞視圖模型MVC5
第一部分視圖
第二部分視圖
@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>
控制器
[HttpPost]
public PartialViewResult Service(NewRequestViewModel model)
{
return PartialView("_NewService", model);
}
發出AJAX請求是一個*完全獨立的請求 - 響應循環,與初始視圖呈現期間發生的事件完全脫離了。如果您需要信息,您必須將其與AJAX請求一起發佈或在那裏重建。 –
對不起克里斯。我不明白你。例如,你給我一個例子 – Tom
我可以看到控制器中的視圖模型值,但是在客戶端,當我做一個警報來檢查它顯示的模型數據爲空時 – Tom