我有以下情形的web應用程序:MVC 3通模型而不使用HTML表單(提交)或JSON
用戶註冊的公司,對於該予加載公司創建視圖。
在創建頁面中,我有一個公司聯繫人下拉列表。最初這個列表是空的,用戶可以點擊一個創建按鈕來創建一個新地址。
這會爲聯繫人加載部分視圖(如JQuery彈出窗口)。在用戶創建新的聯繫人後,視圖返回到公司註冊視圖。公司註冊視圖必須在下拉框中使用新添加的聯繫人進行刷新。它還必須保留任何已經輸入的數據。
以下與我的情況相同,但由於設計限制,我無法使用JSON。 How to pass the full Model from view to controller via jquery in a MVC c# application
我的問題:有沒有什麼辦法可以將整個模型存儲到會話視圖中,以便在控制器中使用?
我試過如下:
<div class="editor-label">
@Html.LabelFor(model => model.CompanyName)
</div>
<div class="editor-field">
@Html.EditorFor(model => model.CompanyName)
@Html.ValidationMessageFor(model => model.CompanyName)
@Session.Add("CompanyName",Model.CompanyName)
</div>
由於這是無效的,它不返回一個值,而無法呈現。
所以,我想通過模型作爲參數傳遞給控制器,但它一直被空:
public ActionResult CreateContactPerson(ManagementAgencyViewModel viewModel)
{
if(HttpContext.Session != null)
HttpContext.Session.Add("MaObject",viewModel);
return RedirectToAction("Create", "ContactPersons");
}
使用一個ActionLink的調用公司控制器名爲「ManagementAgencies」:
@Html.ActionLink(@ViewResources.Link_New_ContactPerson, "CreateContactPerson", "ManagementAgencies", null, new { @class = "openDialog ui-button ui-state-default ui-corner-all", data_dialog_id = "createDialog", data_dialog_title = @ViewResources.DialogTitle_CreateNew })
有沒有其他方法可以存儲在Session中,而不使用隱藏字段或JSON? 如果是這樣,從視圖內將模型值存儲到會話中的正確方法是什麼?
當您說'JSON'時,您的意思是您不能使用$ .ajax將值發佈到CreateContactPerson? –