在多表单页面中保留页面数据

时间:2015-10-04 18:14:19

标签: asp.net asp.net-mvc forms asp.net-mvc-4

我知道similar question already asked,但我的问题与保存页面状态有关。为简单起见我使用相同的模型。假设我有以下模型:

public class LoginRegisterViewModel   
{
    public string LoginUsername { get; set; }
    public string LoginPassword { get; set; }

    public string RegisterUsername { get; set; }
    public string RegisterPassword { get; set; }
    public string RegisterFirstName { get; set; }
    public string RegisterLastName { get; set; }
}

我对两件事感兴趣:

1-我必须知道点击了哪个按钮

2-我必须保留两种表格数据。这意味着当用户已经为登录填充LoginUsername然后决定注册站点并单击注册按钮时,作为响应,两个表单状态都将被保存。

使用以下方法:

@model LoginRegisterViewModel

@using (Html.BeginForm("Login", "MemeberController", FormMethod.Post, new {})) {

    @Html.LabelFor(m => m.LoginUsername)
    @Html.TextBoxFor(m => m.LoginUsername)

    @Html.LabelFor(m => m.LoginPassword)
    @Html.TextBoxFor(m => m.LoginPassword)

    <input type='Submit' value='Login' />

}

@using (Html.BeginForm("Register", "MemeberController", FormMethod.Post, new {})) {

    @Html.LabelFor(m => m.RegisterFirstName)
    @Html.TextBoxFor(m => m.RegisterFirstName)

    @Html.LabelFor(m => m.RegisterLastName)
    @Html.TextBoxFor(m => m.RegisterLastName)

    @Html.LabelFor(m => m.RegisterUsername)
    @Html.TextBoxFor(m => m.RegisterUsername)

    @Html.LabelFor(m => m.RegisterPassword)
    @Html.TextBoxFor(m => m.RegisterPassword)

    <input type='Submit' value='Register' />
}

我将知道点击了哪个按钮。但我不知道其他形式有哪些信息。如果我只使用单一表格,我不知道哪个按钮已经提交了表格(我知道我可以使用Request.Form [&#34; buttonvalue&#34;],但我认为这不是干净的解决方案)

在最坏的情况下,模型可能包含有关一个网格的信息:

public class LoginRegisterViewModel   
{
    public string LoginUsername { get; set; }
    public string LoginPassword { get; set; }

    public string RegisterUsername { get; set; }
    public string RegisterPassword { get; set; }
    public string RegisterFirstName { get; set; }
    public string RegisterLastName { get; set; }

    public List<RowModel> Rows {get; set;}
}

当我发送登录表单时,我不知道我页面中的当前页面,排序和过滤器。 MVC将如何帮助解决这些问题?

更新1:

由于某些原因,我不想使用JavaScript和jquery。

1 个答案:

答案 0 :(得分:0)

如果我正确理解您的问题,以下是可以帮助您的要点:

1)请注意,您只能访问您提交的表单中的表单字段数据。

2)形成你提到的场景,如果你可以使用jQuery / Ajax发布,那么点击登录按钮只发布相关的输入数据,点击注册按钮发布两个表格.Eg:

var dataToPost = $("#frmLogin, #frmRegister").serialize();// Onclick of Register button posting both form data

注意:要处理上述问题,您需要有一个可以同时保存登录和放大的视图模型。注册信息。

3)根据您提出的问题中的表单结构,作为一种好的做法,只需在登录提交或注册按钮单击时检查您的数据库的凭证信息。

4)检查数据状态的更好方法是通过验证数据库,以防会话/缓存不是一个选项。

希望这能帮到你......