对于 Web 应用程序,我有以下场景:
用户注册了一家公司,为此我加载了一个公司创建视图。
在创建页面中,我有一个公司联系人的下拉列表。最初这个列表是空的,用户可以点击一个创建按钮来创建一个新地址。
这会加载联系人的部分视图(作为 JQuery 弹出窗口)。用户创建新的联系人后,视图返回到公司注册视图。公司注册视图必须刷新下拉框中新添加的联系人。它还必须保留已输入的任何数据。
以下与我的情况相同,但由于设计限制,我无法使用 JSON。如何在MVC c#应用程序中通过jquery将完整的模型从视图传递到控制器
我的问题:有什么方法可以将视图中的整个模型存储到 Session 中,以便在我的控制器中使用?
我尝试了以下方法:
<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 })
在不使用隐藏字段或 JSON 的情况下,是否有任何替代方法可以存储在 Session 中?如果是这样,从视图中将模型值存储到会话中的正确方法是什么?